当前位置: 首页 > news >正文

应用日志收集与 logrotate 切割配置

网罗开发(小红书、快手、视频号同名)

大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!


文章目录

    • 前言
    • logrotate 基本用法
    • 针对应用日志的配置示例
    • Nginx 日志示例
    • Python 应用写日志的建议
    • 总结

前言

应用和 Nginx 等会持续写日志,若不切割和清理,日志文件会占满磁盘,导致服务异常。logrotate 是 Linux 下常用的日志轮转工具,可按天或按大小切割、压缩旧日志、保留最近 N 份。本文只讲 logrotate 的核心配置思路和针对应用日志的示例,不贴完整可运行 Demo。

logrotate 基本用法

logrotate 通过配置文件定义「哪些日志、如何轮转、保留多少份」。配置一般在/etc/logrotate.d/下,每个服务一个文件,主配置/etc/logrotate.conf会 include 该目录。

轮转由 cron 按天触发(如/etc/cron.daily/logrotate),也可手动执行:sudo logrotate -f /etc/logrotate.conf-f表示强制执行一次,用于测试)。

针对应用日志的配置示例

假设应用日志路径为/var/www/app/logs/app.log,希望:每天轮转、保留 7 天、压缩旧日志、轮转后由应用继续写新文件(不丢日志)。

/var/www/app/logs/*.log { daily rotate 7 compress delaycompress missingok notifempty create 0644 deploy deploy copytruncate }

要点:

  • daily:按天轮转;也可用size 50M等按大小轮转。
  • rotate 7:保留 7 份轮转后的文件(如 app.log.1、app.log.2.gz 等),超过的删除。
  • compress:轮转后的文件用 gzip 压缩;delaycompress:最近一次轮转的文件不压缩(便于排查当天问题)。
  • missingok:日志文件不存在不报错;notifempty:空文件不轮转。
  • create 0644 deploy deploy:轮转后新建空日志文件,权限 0644,属主 deploy。若应用通过「重开文件句柄」写新文件,用 create 即可;若应用不重开句柄(只写 inode),需用copytruncate:先拷贝当前文件再清空原文件,应用继续写原文件,可能丢失拷贝与清空之间的少量日志,但无需重启应用。
  • 二选一:要么create(应用支持 SIGHUP 或重新打开日志路径),要么copytruncate(应用不重开句柄时用)。

Nginx 日志示例

/var/log/nginx/*.log { daily rotate 14 compress delaycompress missingok notifempty create 0640 nginx adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid) endscript }

sharedscripts:多文件只执行一次 postrotate。postrotate:轮转后发 USR1 让 Nginx 重新打开日志文件,避免写已轮转走的文件。若 Nginx 以 root 或 nginx 用户运行,需保证 create 的属主与 Nginx 一致。

Python 应用写日志的建议

应用侧建议按「日期或大小」切文件,便于与 logrotate 配合或替代 logrotate。例如使用 Python 的logging.handlers.TimedRotatingFileHandler

fromlogging.handlersimportTimedRotatingFileHandler handler=TimedRotatingFileHandler('/var/www/app/logs/app.log',when='midnight',interval=1,backupCount=7)

这样应用自己按天切文件并保留 7 份,若不再用 logrotate 对该路径轮转,需注意磁盘总占用。若应用只写单一文件且不重开句柄,则用 logrotate 的copytruncate更省事,无需改应用代码。

总结

  • 使用 logrotate 的daily(或 size)、rotatecompressdelaycompress控制轮转与保留。
  • 应用能重开日志句柄时用create;不能时用copytruncate,接受极少量丢失。
  • Nginx 等需在postrotate中发信号让其重新打开日志。
  • 敏感日志路径与权限(create 的属主)需与运行用户一致,避免权限错误。

按上述方式配置即可避免日志占满磁盘,并保留近期日志便于排查问题。

http://www.jsqmd.com/news/366625/

相关文章:

  • 大模型推理,不再是“一根筋”
  • 2026 南昌英语雅思培训教育机构推荐:雅思培训课程中心权威口碑榜单 - 老周说教育
  • 推理性能PK,华为+DeepSeek>英伟达?
  • 想让AI更智能?收藏这篇,小白也能学会调用工具的Agent智能体!
  • 2026 厦门英语雅思培训教育机构推荐:雅思培训课程中心权威口碑榜单 - 老周说教育
  • (2026年最新)AI大模型学习路线图详解:从入门到精通,你的完整学习指南!_大模型学习路线
  • 【课程设计/毕业设计】基于SpringBoot框架的食品安全服务系统基于springboot的食品安全监测及风险预警系统的设计与实现【附源码、数据库、万字文档】
  • 2026年IT圈最火话题:AI智能体与鸿蒙生态大爆发!你抓住机会了吗?
  • LLM 联网搜索,到底是咋回事?
  • 编写摄影交友APP,根据用户摄影水平,摄影类型(风景,人物,美食),匹配同城摄影爱好者,推荐摄影地点,活动,共享摄影作品,技巧,提升摄影能力。
  • 2026陕西医院标识设计行业指南:核心要素解析与Top5企业榜单 - 深度智识库
  • 2026 台州英语雅思培训教育机构推荐/雅思培训课程中心权威口碑榜单 - 老周说教育
  • 三重for循环应用
  • 实现PC与使用EtherNet/IP协议的PLC通信
  • Cirrus项目
  • 保姆级教程 | 人工智能应用开发平台 Coze
  • 2026 厦门英语雅思培训教育机构推荐,雅思培训课程中心权威口碑榜单 - 老周说教育
  • 2026 南通英语雅思培训教育机构推荐,雅思培训课程中心权威口碑榜单 - 老周说教育
  • 2026最新PE管厂家最新推荐,实力品牌深度解析采购无忧之选 - 深度智识库
  • 2026 厦门英语雅思培训教育机构推荐;雅思培训课程中心权威口碑榜单 - 老周说教育
  • 前端安全防护方案
  • 抢占洛阳本地流量新高地!专业团购代运营赋能商户全域增长 - 野榜数据排行
  • 范式重构:当编程变成“意图”——黄仁勋眼中的AI工厂与智能体未来
  • (12)GetPlayerPawn(..) 与 GetPlayerCharacter(..) 这俩函数啥区别 ?
  • 并网式+分布式全覆盖!2026光伏气象站厂家实力TOP5揭晓 - 品牌推荐大师
  • 2026 哈尔滨英语雅思培训教育机构推荐:雅思培训课程中心权威口碑榜单 - 老周说教育
  • Cirrus-be安装部署
  • ABB张力3BSE004166R1压力传感器
  • 函数计算 AgentRun 全新升级!让 Agent 拥有长记忆,更聪明、更懂你
  • ABB张力3BSE004191R1压力传感器