news 2026/9/5 15:16:39

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
应用日志收集与 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 的属主)需与运行用户一致,避免权限错误。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 1:12:48

2025LLM核心架构进展复盘:Attn与MOE研究精选(收藏版)

本文回顾了2025年大模型(LLM)在注意力机制(Attn)和专家混合(MOE)方面的核心架构进展。重点介绍了TPA、MoBA、NSA等创新方法,如低秩压缩KVcache、Top-k block注意力、原生稀疏注意力等&#xff0…

作者头像 李华
网站建设 2026/9/3 1:12:48

导师推荐!AI论文写作软件 千笔·专业论文写作工具 VS speedai 本科生专属

随着人工智能技术的迅猛迭代与普及,AI辅助写作工具已逐步渗透到高校学术写作场景中,成为本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生,开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时&#xf…

作者头像 李华
网站建设 2026/9/3 1:12:52

原理详解:XinServer 是如何做到接口一键生成的?

原理详解:XinServer 是如何做到接口一键生成的? 不知道你有没有过这种经历:产品经理拿着原型图过来,说下周一要上线一个内部管理系统,需要用户管理、部门管理、权限控制,外加一堆业务表单。你心里一咯噔&am…

作者头像 李华
网站建设 2026/9/3 1:12:53

用实力说话千笔·专业降AI率智能体,全网顶尖的降AIGC网站

在AI技术迅速渗透学术写作领域的今天,越来越多的本科生开始借助AI工具提升论文写作效率。然而,随着各大查重系统对AI生成内容的识别能力不断提升,如何有效降低论文中的AIGC率和重复率,已成为困扰无数学生的难题。面对市场上琳琅满…

作者头像 李华
网站建设 2026/9/3 1:12:53

Java计算机毕设之基于springboot+vue的食品安全监测及风险预警系统基于springboot的食品安全监测及风险预警系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华