避免 cron 任务产生的日志噪音——使用 syslog-ng 而不是 syslog

避免 cron 任务产生的日志噪音——使用 syslog-ng 而不是 syslog

在我的小型 Debian squeeze 网络服务器上,我安装了 syslog-ng(不是syslogd,例如这个问题)。一般来说,我的日志很安静,

-- MARK -- 

行。/var/log/syslog然而,我的却充斥着这些

Sep 23 23:09:01 bookchin /USR/SBIN/CRON[24885]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete > /dev/null)
Sep 23 23:09:01 bookchin /USR/SBIN/CRON[24886]: (root) CMD (  [ -d /var/lib/php4 ] && find /var/lib/php4/ -type f -cmin +$(/usr/lib/php4/maxlifetime) -print0 | xargs -r -0 rm > /dev/null)
Sep 23 23:17:01 bookchin /USR/SBIN/CRON[24910]: (root) CMD (   cd / && run-parts /etc/cron.hourly)

这是一种垃圾。有什么干净的方法可以避免这种情况(再次使用 syslog-ng)?

答案1

对于 syslog-ng 来说,它与常规 syslog 略有不同:您需要将 cron 添加到与 关联的过滤器中/var/log/syslog。在 中/etc/syslog-ng/syslog-ng.conf,将其替换为:

filter f_syslog3 { not facility(auth, authpriv, mail) and not filter(f_debug); };

和:

filter f_syslog3 { not facility(cron, auth, authpriv, mail) and not filter(f_debug); };

您就完成了。

答案2

另一个选择是阻止 cron 记录除错误之外的任何内容:

改变/etc/default/cron

  # Or, to log standard messages, plus jobs with exit status != 0:
  # EXTRA_OPTS='-L 5' 
  #
  # For quick reference, the currently available log levels are:
  #   0   no logging (errors are logged regardless)
  #   1   log start of jobs
  #   2   log end of jobs
  #   4   log jobs with exit status != 0
  #   8   log the process identifier of child process (in all logs)
  #
  EXTRA_OPTS="-L 0"

默认情况下 EXTRA_OPTS 行是“”

附录:

有人错误地编辑了这个答案,使其看起来好像会阻止 cron“完全”记录。这是不正确的。请注意我发布的文本中-L 0的描述:0

 #   0 no logging (errors are logged regardless)

或者直接使用 4:

  #   4   log jobs with exit status != 0

OP 希望避免在启动 cron 作业时每分钟都记录日志消息。仅记录错误或错误和非零退出状态是一个不错的选择。

相关内容