如何防止我的网络服务器的日志文件变得太大?

如何防止我的网络服务器的日志文件变得太大?

注意:我正在使用 Apache2(在 Linux 上),但我从一般意义上询问(仅适用于 Linux),因为我也想知道一般情况下完成此操作的“最佳”方法(因为我即将在 Nginx 或 Cherokee 上部署一个大型站点)。

我的日志文件在短短几周后就变得非常大。我需要暂时保留它们,但我想删除超过 2 周左右的条目。这可行吗?我该怎么做?

答案1

您可以使用 logrotate。它根据特定服务的配置文件轮换日志。它通常由 cron 每天运行。

以下是 Apache 配置文件的示例/etc/logrotate.d/apache2

/var/log/apache2/*_log {
 daily
 rotate 31
 missingok
 compress
 delaycompress
 sharedscripts
 postrotate
  if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
     /etc/init.d/apache2 reload > /dev/null
  fi
 endscript
 }

这个会:

  • 每天轮换原木
  • 保留 31 个轮换日志文件
  • 压缩轮换日志但保持最新轮换日志未压缩(delaycompress)
  • 重新加载进程

如果您不想重新加载该过程,则应使用copytruncate,它会将当前内容复制到新文件,对其进行压缩,然后截断当前日志文件。在这种情况下,您不需要sharedscriptspostrotateendscript

答案2

处理日志的规范工具是日志旋转

相关内容