Logrotate:配置日志轮转、高效管理Linux日志文件

news2025/5/20 22:56:22

Logrotate 是 Linux 系统中用于自动化管理日志文件的工具,能够定期轮转、压缩、删除日志文件,确保系统日志不会无限制增长,占用过多磁盘空间。
它通常由 Cron 作业定期执行,也可以手动触发。


1. 🔧 核心功能

  • 日志轮转:将当前日志文件重命名为备份文件,并创建新的空日志文件供应用程序继续写入。
  • 日志压缩:对过期的日志文件进行压缩,节省磁盘空间。
  • 日志删除:删除旧的日志文件,通常根据日志文件的数量或时间来确定是否删除。
  • 日志保留策略:配置保留的日志文件数量或保留的天数。

2. 📁 配置文件结构与常用指令

配置文件路径

  • 主配置文件/etc/logrotate.conf
  • 应用程序特定配置/etc/logrotate.d/ 目录下的各个配置文件

常用指令

指令说明示例
daily每天轮转日志daily
weekly每周轮转日志weekly
monthly每月轮转日志monthly
rotate <num>保留 <num> 个历史日志文件rotate 4
compress启用日志压缩,通常使用 gzip 格式compress
delaycompress延迟压缩,推迟到下一次轮转时再压缩delaycompress
create <mode> <owner> <group>创建新日志文件,指定权限、所有者和组create 0640 nginx adm
missingok如果日志文件丢失则不报错missingok
notifempty如果日志文件为空,则不进行轮转notifempty
postrotate ... endscript在日志轮转后执行的命令或脚本postrotate ... endscript

3. 📝 日志轮转策略与操作示例

示例配置1: Nginx 日志轮转

/var/log/nginx/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi \
        endscript
        postrotate
                invoke-rc.d nginx rotate >/dev/null 2>&1
        endscript
}

配置说明

  • daily:指定日志按天轮转(每日凌晨触发一次轮转)。
  • missingok:若日志文件不存在,logrotate不报错,继续执行后续操作(避免因日志未生成而中断轮转)。
  • rotate 14:保留最近14个旧日志备份,超过14个的旧日志将被自动删除。
  • compress:对轮转后的旧日志进行压缩(使用gzip,生成.gz格式文件,节省磁盘空间)。
  • delaycompress延迟压缩旧日志,推迟到下一次轮转时再执行压缩(避免当前轮转的日志仍在被Nginx写入时压缩)。
  • notifempty:若日志文件为空,跳过轮转操作(不生成空的备份文件)。
  • create 0640 www-data adm
    • 轮转后创建新日志文件,权限为0640(所有者www-data可读可写,所属组adm可读,其他用户无权限)。
    • 所有者为www-data(Nginx服务在Ubuntu/Debian系统的默认运行用户),所属组为adm(系统管理组,通常用于日志管理)。
  • sharedscripts:当有多个日志文件需要轮转时(如access.logerror.log),prerotatepostrotate脚本仅执行一次(避免重复执行脚本)。
  • prerotate ... endscript
    • 日志轮转前执行的脚本
    • if [ -d /etc/logrotate.d/httpd-prerotate ]:检查是否存在httpd-prerotate目录(可能为兼容Apache日志预处理脚本,或系统预留的通用目录)。
    • run-parts:执行目录内的所有可执行脚本(通常用于在轮转前清理、检查或备份日志相关资源)。
  • postrotate ... endscript
    • 日志轮转后执行的脚本
    • invoke-rc.d nginx rotate:通过系统初始化脚本(invoke-rc.d)通知Nginx重新加载日志配置(等价于发送USR1信号,使Nginx停止写入旧日志,开始写入新创建的日志文件)。
    • >/dev/null 2>&1:将脚本执行的输出和错误重定向到空设备(静默执行,不输出任何信息)。

示例配置2:使用 copytruncate 的 uWSGI 日志轮转

以下是针对 uWSGI 应用程序的日志轮转配置示例,特别使用了 copytruncate 选项,以避免重启服务。

示例配置:

/home/ly/code/web_proj/log/myapp.log {
    daily
    rotate 7
    missingok
    notifempty
    copytruncate
    dateext
    dateyesterday
    dateformat -%Y%m%d
    su ly ly
}

配置说明:

  • daily:每天轮转日志
  • rotate 7:保留最近 7 个日志文件
  • missingok:如果日志文件丢失则不报错
  • notifempty:如果日志文件为空,则不进行轮转
  • copytruncate:复制日志文件内容后清空原文件,适用于不支持重载信号的服务
  • dateext:使用日期作为日志文件的后缀
  • dateyesterday:使用昨天的日期,因为日志轮转发生在每天的午夜(00:00),这时已经是第二天的日期了
  • dateformat -%Y%m%d:指定日期格式为 -YYYYMMDD
  • su ly ly:以 ly 用户身份执行轮转操作

使用 copytruncate 后,uWSGI 无需重启即可继续写入新的日志文件,因此无需配置 postrotateendscript


4. 🧪 手动触发与调试 Logrotate

1. 检查配置文件的正确性(调试模式)

在进行实际的日志轮转之前,建议先使用调试模式检查配置文件是否正确。

命令:

sudo logrotate -d /etc/logrotate.d/uwsgi

说明:

  • -d:启用调试模式,模拟执行日志轮转,但不进行实际的文件操作。
  • -v:启用详细模式,提供更多的调试信息。

该命令将输出 Logrotate 将执行的操作步骤,包括哪些日志文件将被轮转、是否需要执行 postrotate 脚本等。

2. 强制执行日志轮转

如果调试模式显示配置正确,您可以使用以下命令强制执行日志轮转:

命令:

sudo logrotate -f /etc/logrotate.d/uwsgi

说明:

  • -f:强制执行日志轮转,即使日志文件未达到轮转条件(如大小、时间等)。

该命令将立即执行日志轮转,按照配置文件中的规则处理日志文件。

3. 查看日志轮转状态

Logrotate 会记录日志轮转的状态信息,您可以查看状态文件了解日志轮转的历史记录:

命令:

cat /var/lib/logrotate/status

说明:

该文件包含每个日志文件的最后一次轮转时间等信息。

在这里插入图片描述

4. 注意事项

  • 配置文件路径:确保在命令中使用正确的配置文件路径。
  • 权限问题:如果 Logrotate 无法访问日志文件,可能是权限设置不当。

通过上述步骤,您可以有效地手动触发和调试 Logrotate,确保日志轮转配置的正确性和有效性。


5. ✅ 最佳实践与常见问题

最佳实践

  • 合理配置日志轮转策略:根据日志文件的生成速度和重要性,合理设置轮转周期和保留数量
  • 使用压缩功能:对旧日志进行压缩,节省磁盘空间
  • 定期检查日志文件状态:定期检查 /var/lib/logrotate/status 文件,了解日志轮转的状态和历史记录
  • 测试配置文件:在正式应用前,使用 -d 参数测试配置文件,确保配置正确无误

常见问题

  • 日志文件未轮转:检查配置文件中的轮转条件是否满足,例如文件大小、轮转周期等
  • 日志文件丢失:确保配置文件中使用了 create 指令,创建新日志文件时设置了正确的权限和所有者
  • 服务未重载:检查 postrotate 脚本是否正确执行,服务是否支持相应的重载信号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2380297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贵州某建筑物挡墙自动化监测

1. 项目简介 某建筑物位于贵州省某县城区内&#xff0c;靠近县城主干道&#xff0c;周边配套学校、医院、商贸城。建筑物临近凤凰湖、芙蓉江等水系&#xff0c;主打“湖景生态宜居”。改建筑物总占地面积&#xff1a;约5.3万平方米&#xff1b;总建筑面积&#xff1a;约15万平…

nginx服务器实验

1.实验要求 1&#xff09;在Nginx服务器上搭建LNMP服务&#xff0c;并且能够对外提供Discuz论坛服务。 在Web1、Web2服务器上搭建Tomcat 服务。 2&#xff09;为nginx服务配置虚拟主机&#xff0c;新增两个域名 www.kgc.com 和 www.benet.com&#xff0c;使用http://www.kgc.…

高速光耦在通信行业的应用(五) | 5Mbps通信光耦的特性

针对5MBd速率光耦市场&#xff0c;晶台推出KL2200、KL2201和KL2202系列光耦 ,对标大部分国外品牌产品的应用&#xff1b;它分别由一个红外发射二极管和一个高速集成光电检测器逻辑门组成。 它采用 8 引脚 DIP 封装&#xff0c;并提供 SMD 选项。KL2200 的检测器具有一个三态输出…

Apidog MCP服务器,连接API规范和AI编码助手的桥梁

#作者&#xff1a;曹付江 文章目录 1.了解 MCP2.什么是 Apidog MCP 服务器&#xff1f;3.Apidog MCP 服务器如何工作4.利用人工智能改变开发工作流程5.设置 Apidog MCP 服务器&#xff1a; 分步指南5.高级功能和提示5.1 使用 OpenAPI 规范5.2.多个项目配置5.3.安全最佳实践5.4…

国内MCP服务平台推荐 AIbase推出MCP服务器客户端商店

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度发展&#xff0c;不断改变着我们的生活和工作方式。2025年&#xff0c;AI领域迎来了一项重要的技术进展——MCP(Model Context Protocol&#xff0c;模型上下文协议)的广泛应用。这一技术…

Profinet转Ethernet IP主站网关:点燃氢醌生产线的智慧之光!

案例分享&#xff1a;转角指示器和Profinet转EthernetIP网关的应用 在现代工业自动化中&#xff0c;设备和系统之间的高效通信至关重要。最近&#xff0c;我们在某大型化工企业的生产线上实施了一个项目&#xff0c;旨在通过先进的设备和通信技术提高生产效率和安全性。该项目…

爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案

爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案 这张有趣的图片生动描绘了爬虫开发者与反爬工程师之间的"军备竞赛"。作为技术博主,我将基于这张图的各个阶段,深入分析爬虫技术的演进与对应的反制措施,提供一套完整的反爬解决方案,包括技术原理、实施方法…

[ctfshow web入门] web75

信息收集 启用了open_basedir&#xff0c;所以之前的方法又不能用了 解题 cforeach(new DirectoryIterator("glob:///*") as $a){echo($a->__toString(). ); } ob_flush();cif ( $a opendir("glob:///*") ) {while ( ($file readdir($a)) ! false …

交流学习 | 江西同为科技有限公司赴海尔总部考察交流

2025年4月8日至9日&#xff0c;江西同为科技有限公司在江西省科技装备商会的带领下&#xff0c;以蔡文君经理为代表&#xff0c;一行人赴山东青岛海尔总部开展两天的考察交流活动。本次考察不仅深入剖析了海尔企业的前沿技术与管理理念&#xff0c;更促进了行业内科技创新、商业…

React方向:react的基本语法-数据渲染

1、安装包(js库) yarn add babel-standalone react react-dom 示例图.png 2、通过依赖包导入js库文件 <script src"../node_modules/babel-standalone/babel.js"></script> <script src"../node_modules/react/umd/react.development.js"&g…

RK3568-鸿蒙5.1镜像烧录与调试

参考https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/docs/%E7%83%A7%E5%BD%95%E6%8C%87%E5%AF%BC%E6%96%87%E6%A1%A3.md https://blog.csdn.net/pengjiadashaoye/article/details/144448126 固件烧录 缺了3个 , 没找着,烧录试试看 ,看了参考也不太一样 缺了…

游戏引擎学习第294天:增加手套

准备战斗 我们正在进行的是第294天的开发&#xff0c;目前暂时没有特别确定要做的内容&#xff0c;但我们决定继续研究移动模式相关的部分。虽然一些小型实体系统已经在运行&#xff0c;但并不确定最终效果如何。 今天我们决定实现一个全新的功能&#xff1a;战斗系统。这是游…

C# Try Catch Finally 执行顺序是什么?有返回值呢?

Try Catch Finally 执行顺序是什么&#xff1f;有返回值呢&#xff1f; 大部分程序员都认为&#xff1a;C#异常处理执行顺序&#xff0c;很简单&#xff0c;没什么可说的。 正常情况&#xff1a;执行顺序为 1、3(下图) 异常情况&#xff1a;执行顺序为1、2、3 文章目录 Tr…

水库雨水情测报与安全监测系统解决方案

一、方案概述 本水库雨水情测报与安全监测解决方案的核心目标在于利用尖端的技术手段&#xff0c;确保对水库雨水情势以及大坝安全状况的持续监控和及时预警&#xff0c;从而为水库的稳定运行提供坚实的支持和保障。该方案严格遵循“统筹协调、因库制宜、实用有效、信息共享”的…

架构选择/区别

目录 一、分层架构&#xff08;Layered Architecture&#xff09; 二、微服务架构&#xff08;Microservices Architecture&#xff09; 三、分布式架构&#xff08;Distributed Architecture&#xff09; 四、单体架构&#xff08;Monolithic Architecture&#xff09; 五…

嵌入式学习笔记 - STM32 ADC 模块工作模式总结

ADC 模式总结&#xff1a; 一 单ADC模式&#xff08;是指ADC1,ADC2,ADC3中只有一个ADC被使用&#xff09; ①单通道&#xff1a; 非连续模式&#xff1a;非连续的意思就是单次&#xff0c;一次转换完成后就停止转换&#xff0c;除非再次被软件或者被外部触发启动&#xff1b…

IPLOOK | 2025 MVNOs 世界大会:从Wi-Fi通话到卫星覆盖

2025 MVNOs 世界大会于5月12日至14日在奥地利维也纳举行&#xff0c;汇聚了来自50多个国家的550余位行业领袖&#xff0c;共同探讨移动虚拟网络运营商&#xff08;MVNO&#xff09;领域的变革趋势。本届大会聚焦数字化转型、技术创新与战略合作&#xff0c;其中IPLOOK凭借其创新…

零基础搭建!基于PP-ShiTuV2的轻量级图像识别系统(Docker+API部署指南)

以下是对该图像分类识别系统的的简单介绍&#xff1a; PP-ShiTuV2 是一个由百度飞桨团队发布的实用轻量级通用图像识别系统&#xff0c;由主体检测、特征提取、向量检索三个模块构成&#xff0c;适用于快速构建轻量级、高精度、可落地的图像识别应用image_classification是一个…

【C语言】贪吃蛇小游戏

文章目录 前言一、贪吃蛇游戏代码test.c文件Snake.h文件Snake.c文件 二、相关函数的介绍1.COORD2.Win32 API的介绍3.GetStdHandle4.GetConsoleCursorInfo5.CONSOLE_CURSOR_INFO5.SetConsoleCursorInf6.SetConsoleCursorPosition7.GetAsyncKeyState 总结 前言 哈喽各位好呀。今…

大语言模型 07 - 从0开始训练GPT 0.25B参数量 - MiniMind 实机训练 预训练 监督微调

写在前面 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是目前最广泛应用的大语言模型架构之一&#xff0c;其强大的自然语言理解与生成能力背后&#xff0c;是一个庞大而精细的训练流程。本文将从宏观到微观&#xff0c;系统讲解GPT的训练过程&#xff0c;…