logrotate 日志文件管理工具介绍和经典案例

目录

1.使用介绍

2.经典例子

[2.1 基本配置示例](#2.1 基本配置示例)

[2.2 按大小轮转示例【推荐】](#2.2 按大小轮转示例【推荐】)

[2.3 包含额外配置文件](#2.3 包含额外配置文件)

[2.4 个人工作中使用案例](#2.4 个人工作中使用案例)


`logrotate` 是一个日志文件管理工具,用于定期轮转、压缩和删除日志文件,以防止日志文件无限增长导致磁盘空间耗尽。下面是 `logrotate` 的简单介绍和一些经典例子:

1.使用介绍

  1. 配置文件:`logrotate` 的配置文件通常位于 `/etc/logrotate.conf` 或者 `/etc/logrotate.d/` 目录下,每个配置文件对应一个日志文件的轮转设置。

  2. 轮转周期:可以通过配置文件指定日志文件的轮转周期,例如每天、每周或每月等。

  3. 保留备份:可以设置保留多少个轮转后的备份文件,避免占用过多磁盘空间。

  4. 压缩选项:可以配置是否对轮转后的日志文件进行压缩处理。

2.经典例子

2.1 基本配置示例

bash 复制代码
/var/log/myapp.log {
   daily
   rotate 7
   compress
   missingok
   notifempty
}

上面参数说明:

  • `daily`:每天轮转一次。

  • `rotate 7`:保留最近 7 个轮转后的备份文件。

  • `compress`:对轮转后的备份文件进行压缩。

  • `missingok`:如果日志文件不存在,则忽略错误继续。

  • `notifempty`:如果日志文件为空,则不轮转。

2.2 按大小轮转示例【推荐】

bash 复制代码
/var/log/myapp.log {
   size 100M
   rotate 5
   compress
}

上面参数说明:

  • `size 100M`:当日志文件达到 100MB 时进行轮转。

  • `rotate 5`:保留最近 5 个轮转后的备份文件。

  • `compress`:对轮转后的备份文件进行压缩。

2.3 包含额外配置文件

在 `/etc/logrotate.conf` 中可以使用 `include` 指令包含其他配置文件:

bash 复制代码
include /etc/logrotate.d/*

这些例子展示了 `logrotate` 的基本用法和配置方式。根据实际需求和日志文件的特点,可以灵活配置 `logrotate`,以确保日志文件得到有效管理和轮转。

2.4 个人工作中使用案例

(1)自动轮转:创建文件bcsc-platfrom-system-start,文件内容如下,然后把文件丢到这个目录下面:/etc/logrotate.d/ 系统就会自动轮询。

bash 复制代码
/home/facePay/platform-9022/logs/console.log{

    copytruncate

    rotate 50

    missingok

    compress

    size 100M

}

(2)手动轮转:跟平常开发项目一样,想手动测试一次定时任务,就用下面命令进行操作:

bash 复制代码
logrotate --force  /etc/logrotate.d/bcsc-platfrom-system-start

上面参数说明:

  • `copytruncate` 参数是用于告诉 `logrotate` 在轮转日志文件时采取的一种特殊操作。通常,在轮转日志文件时,`logrotate` 会创建一个新的空日志文件来接收新的日志内容,然后将旧的日志文件进行重命名或者压缩。但是在某些情况下,如果日志文件正在被某个进程打开并写入,直接轮转会导致该进程继续往已经重命名的日志文件中写入数据,导致日志丢失或者混乱。

这时候就可以使用 `copytruncate` 参数,它的作用是在轮转日志文件时,`logrotate` 会首先创建一个新的空日志文件来接收新的日志内容,然后将旧的日志文件进行重命名,但不断开与原日志文件相关的文件描述符,而是使用 `cp` 命令来复制原始文件的内容到新文件,再使用 `truncate` 命令将原始文件截断为0字节,这样就能保证日志文件的连续性,避免了因为关闭日志文件导致的日志丢失或者混乱。

因此,`copytruncate` 参数在某些需要连续性的日志文件轮转场景中非常有用,可以确保日志文件在轮转过程中不会丢失任何日志信息。

  • `rotate 50`:保留最近 50 个轮转后的备份文件。

  • `compress`:对轮转后的备份文件进行压缩。

  • `missingok`:如果日志文件不存在,则忽略错误继续。

  • `notifempty`:如果日志文件为空,则不轮转。

  • `size 100M`:当日志文件达到 100MB 时进行轮转。

介绍完毕,感谢阅读,如果文章对您有帮忙,麻烦点个赞。

相关推荐
金銀銅鐵8 小时前
带您看懂字节码指令(二):空循环里有什么
java·后端·ai编程
吴名氏.9 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
.痞老板.10 小时前
java ee--多线程(进阶)
java·java-ee
可乐ea10 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
深入云栈11 小时前
Netty 4.2.x 源码深度解析 (二十三):ByteBuf 核心设计 —— 索引、类型与零拷贝
java·后端·架构
wang_shu_mo_ran13 小时前
MyBatis 从入门到进阶(一)
java·spring·mybatis
量化分析码农14 小时前
股票历史数据的复权参数对照:多级别返回的字段与数值差异
java·javascript·后端
猫猫不是喵喵.14 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
瑞雪兆丰年兮14 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
曲径海盗14 小时前
Try-Except怎么用,3个追问解答在自动化下的应用
java·jvm·oracle