linux 系统,日志系统的logrotate功能介绍
Linux日志管理:/var/log目录与logrotate详解 本文介绍了Linux系统中/var/log目录的作用及logrotate日志轮替工具的工作原理。logrotate仅处理配置文件中指定的日志文件,不会自动扫描整个目录。系统默认配置通常只包含核心服务日志,建议为自定义应用手动创建配置文件。文章提供了logrotate配置模板,包含daily、rotate、compress等常用参数说
大家好,我是B站 大衣哥编程,今天给大家介绍下Linux下/var/log目录及logratate工作方式,如果您对编程感兴趣,特别是C/C++、C#、Java、Go分布式、流媒体、数据库等,可戳:超实用:C++/Java/C#/数据库/网络:编程开发实战分享
详细解释
logrotate 的工作方式:
logrotate 不是一个会“智能扫描”整个 /var/log/ 目录并清理所有文件的魔法工具。
它只会严格按照其配置文件(/etc/logrotate.conf 和 /etc/logrotate.d/ 下的所有文件)中明确指定的路径去处理日志。
因为它无法判断一个未知目录下的文件是否重要、应该保留多久。
默认配置包含什么?
系统的默认配置通常只包含核心系统服务和应用,比如 syslog、rsyslog、nginx、apache2、mysql-server 等。这些应用在安装时,它们的软件包通常会自动在 /etc/logrotate.d/ 目录下生成一个对应的配置文件。
强烈推荐的最佳实践
你应该主动为你的应用程序配置 logrotate 规则。这是符合 Linux 系统管理规范的做法。
操作步骤:
使用 root 权限创建一个配置文件:
sudo vim /etc/logrotate.d/my-hser-app
在该文件中输入以下内容(这是一个通用示例,你可以根据需求调整):
/var/log/hser/*.log {
daily # 每天轮替一次(也可用 weekly、monthly)
missingok # 如果日志文件不存在,不报错,继续处理下一个
rotate 30 # 保留30份轮替后的日志文件
compress # 轮替后,使用gzip压缩旧日志
delaycompress # 延迟压缩,最近一次轮替的文件不压缩(方便查看)
notifempty # 如果日志文件是空的,则不执行轮替
copytruncate # 复制当前日志文件后将其截断,而不是移动和重建
# 这个选项对于不支持接收信号的程序很友好,可以替代 create 和 postrotate
# create 644 root root # 如果不用 copytruncate,可以用这个指定新文件的权限和属主
}
关键参数说明:
rotate 30:决定保留多少份历史日志。30 表示保留 30 天(如果 daily)的日志。
compress:非常重要,能极大节省磁盘空间。
copytruncate:这是一个非常实用的参数。有些应用程序会一直打开文件句柄写日志,标准的“移动并创建新文件”的方式可能会导致日志仍然写入到被移动走的那个文件中。copytruncate 的工作方式是先复制一份当前日志,然后清空原文件,兼容性更好。对于大多数情况,建议使用这个选项。
保存退出后,你可以手动测试一下这个配置是否正确:
sudo logrotate -vf /etc/logrotate.d/my-hser-app
-v:详细输出
-f:强制运行
强烈建议亲自验证下,体验下logrotate功能
更多推荐
所有评论(0)