Avoiding log noise from cron jobs - with syslog-ng rather than syslog

On my small Debian squeeze web server, I have syslog-ng installed (not syslogd, like in this question). Generally, my logs are nice and quiet, with

-- MARK -- 

lines. My /var/log/syslog, however, is littered with this

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)

kind of garbage. What's the clean way to avoid it (again, with syslog-ng)?


For syslog-ng it's slightly different than regular syslog: You need to add cron to the filter associated with /var/log/syslog. In /etc/syslog-ng/syslog-ng.conf, replace this:

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

with:

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

and you're done.


Another option is preventing cron from logging anything except errors:

change /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"

By default the EXTRA_OPTS line is ""

Addendum:

Someone incorrectly edited this answer to make it seem as if -L 0 would prevent cron from logging "altogether." This is incorrect. Note the description of 0 in the text i posted:

 #   0 no logging (errors are logged regardless)

Or just use 4:

  #   4   log jobs with exit status != 0

The OP wanted to avoid the log message every minute for the start of a cron job. Logging errors only or errors and non-zero exit statuses is a good option.