8

I've created a custom log (PHP sends log entries to rsyslog) using local0. It uses a new custom file (/var/log/sea.log). The problem is that logs are being sent to /var/log/sea.log, /var/log/messages and /var/log/syslog. How do I prevent that from happening? I need to send logs only to /var/log/sea.log.

/etc/rsyslog.conf:

#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#           For more information see
#           /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html


#################
#### MODULES ####
#################

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support
#$ModLoad immark  # provides --MARK-- message capability

# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514


###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf


###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none      -/var/log/syslog
#cron.*             /var/log/cron.log
daemon.*            -/var/log/daemon.log
kern.*              -/var/log/kern.log
lpr.*               -/var/log/lpr.log
mail.*              -/var/log/mail.log
user.*              -/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info           -/var/log/mail.info
mail.warn           -/var/log/mail.warn
mail.err            /var/log/mail.err

#
# Logging for INN news system.
#
news.crit           /var/log/news/news.crit
news.err            /var/log/news/news.err
news.notice         -/var/log/news/news.notice

#
# Some "catch-all" log files.
#
*.=debug;\
    auth,authpriv.none;\
    news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
    auth,authpriv.none;\
    cron,daemon.none;\
    mail,news.none      -/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg             :omusrmsg:*

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#   news.=crit;news.=err;news.=notice;\
#   *.=debug;*.=info;\
#   *.=notice;*.=warn   /dev/tty8

# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
# you must invoke `xconsole' with the `-file' option:
# 
#    $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
#      busy site..
#
daemon.*;mail.*;\
    news.err;\
    *.=debug;*.=info;\
    *.=notice;*.=warn   |/dev/xconsole

/etc/rsyslog.d/sea.conf:

local0.info                     /var/log/sea.log
local0.none                     /var/log/messages
local0.none                     /var/log/syslog

3 Answers 3

7

You can also use the 'final' option after your statements. Much easier.

local.0 /var/log/sea.log
&~
6
  • 1
    I knew I was forgetting something. OP, this is the better answer. Commented Apr 6, 2014 at 15:19
  • Thanks!! Are these the same? local0.* /var/log/sea.log --OR-- local.0 /var/log/sea.log
    – brgsousa
    Commented Apr 7, 2014 at 18:38
  • @brgsousa - yes. You can actually use the wildcard so it's literally local0.* if you want as well. I was writing it up from my phone otherwise I would have included the extra details. :) Commented Apr 7, 2014 at 18:54
  • 1
    Where is this documented? Searching for &~ is hard. Commented Jul 6, 2015 at 12:18
  • @MartinSchröder your best bet is going through the manual. Commented Jul 7, 2015 at 14:39
2

Look at this line; $IncludeConfig /etc/rsyslog.d/*.conf. It shows up above all of the standard rules. You need to add local0.none to the /var/log/messages and /var/log/syslog rules in /etc/rsyslog.conf.

0

If you have debugged on the server cannot find anything and still getting duplicates, it is possible the client might be double posting entries. That was the case for me.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .