By default, cron logs are written to the /var/log/syslog file, and the result of the tasks is sent to an email to the user on whose behalf the task is executed, for example, when I executed the script, an entry was added to /var/log/syslog:
CRON[33522]: (root) CMD (/scripts/ixnfo.sh >/dev/null 2>&1)
By the way, so that the result of the execution is not sent to email at the end of the command, I just added:
>/dev/null 2>&1
To duplicate messages in a separate file, open the configuration /etc/rsyslog.d/50-default.conf and uncomment the line:
cron.* /var/log/cron.log
In order for the CRON logs to be written only to a separate file and not written to /var/log/syslog, we do not touch the line above, but open the configuration /etc/rsyslog.conf in a text editor and after:
########################### #### GLOBAL DIRECTIVES #### ###########################
Add:
:programname, startswith, "CRON" /var/log/cron.log :programname, startswith, "CRON" stop
Verify the rsyslog configuration is correct:
rsyslogd -N 1
Restart rsyslog to apply the changes:
service rsyslog restart
By the way, you can also specify this:
:programname, startswith, "CRON", -/var/log/cron.log & ~
Or so:
if ( $programname startswith "CRON" ) then { action(type="omfile" file="/var/log/cron.log" flushOnTXEnd="off") stop }
Or so:
if $programname startswith "CRON" then -/var/log/cron.log &~
See also my articles:
Using and configuring CRON
Installing Rsyslog + Loganalyzer + MySQL