squid access.log 删除超过 6 个月的条目

squid access.log 删除超过 6 个月的条目

Squid 生成用户访问站点的日志。我想删除 中/var/squid/logs/access.log超过 6 个月的条目。

我每周都会执行该脚本。我想到过 Perl 脚本或类似的脚本。

其外观如下access.log

在此输入图像描述

条目的生成方式如下:

IP - - [15/Oct/2011:02:04:32 -400]

答案1

此问题的通常解决方案是使用旋转日志文件,以便当前日志文件仅包含当前条目,而不是从文件中删除过时的条目。

这一切都由logrotate程序处理。以下配置应该大致满足您的要求。它将保留最近 6 个月的日志条目/var/squid/logs/access.log,每周轮换文件。

/var/squid/logs/access.log {
    weekly
    rotate 26
    missingok
    nocreate
    sharedscripts
    postrotate
        test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate
    endscript
}

如果您确实关心日志文件中的数据,则不应修改它们。

答案2

解决方案与newsyslog:

# logfile                 [owner:group]    mode    count    when   flags
/var/squid/logs/access.log root             644     26       $W0D0  JN

日志文件在被删除之前将轮换 26 次。$W0D0表示我会在每周日一点轮换0:00

该标志J指示 newsyslog 应使用 压缩旋转文件bzip2

该标志N表明没有需要发出信号的进程。

相关内容