Logrotate - 如何改变它以使其永远不会删除日志并且每 6 个月创建一个 .gz?

Logrotate - 如何改变它以使其永远不会删除日志并且每 6 个月创建一个 .gz?

我读过手动旋转,但我仍然不清楚。我的问题主要与 NGINX Web 服务器日志有关。

这是我当前的logrotate.conf:

# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

在 /etc/logrotate.d 中我还有其他内容:nginx:

/var/log/nginx/*log {
    create 0644 nginx nginx
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

以下是我能看到的一些 .gz:

access.log-20150430.gz
access.log-20150509.gz (created after ~10 days)
access.log-20150524.gz (created after ~15 days)
access.log-20150528.gz (created after ~4 days)
  1. 为什么 .gz 日志创建得如此频繁,且时间范围如此“随机”?
  2. 我应该进行哪些更改才能每 6 个月创建新的 .gz 文件和/或 .log 文件大于 100MB 之后创建?
  3. 旋转 10这是否意味着如果我已经有 10 个 .gz 文件,那么当压缩第 11 个时,它会自动删除最旧的 .gz 文件?如果是,我该如何避免删除日志文件?我必须保留它们,即使它们很旧。
  4. 有什么区别日常的旋转 10
  5. 这些文件的创建权限可以吗?
  6. 在我对 logrotate.conf 进行某些更改后,我是否应该重新启动某些服务,或者是否应该立即应用这些更改?

答案1

我认为 logrotate 手册对您的大部分观点都很清楚。以下是我的答案:

  1. 使用daily会导致日志轮换每天都发生。因此,您需要检查为什么它没有每天发生。例如,notifempty如果日志文件几天都是空的,这可能是由其他选项引起的。
  2. 我找不到每 6 个月执行一次的选项,但您有monthlyyearly。对于尺寸配置,您可以使用size 100M
  3. 是的。要保留所有值,您可以选择一个非常大的值。
  4. daily指定轮换频率并rotate指定保留的日志文件数量。
  5. 如果日志不包含敏感信息(其他人可以读取),那就没问题。
  6. 不,您不需要重新启动任何程序。

相关内容