所有系统日志都不包含消息换行符的结尾

我们有一个奇怪的问题,所有的日志都在/var/log/在它们的消息结尾没有尾随的新行,而是包含一个n ,但是整个文件是一行':'。

 Jun 4 10:18:54 host sshd[12468]: Accepted publickey for username from xx.xx.xx.xxx port xxxx ssh2nJun 4 10:18:54 host sshd[12468]: pam_unix(sshd:session): session opened for user username by (uid=0)nJun 4 10:19:25 host sudo: username : TTY=pts/0 ; PWD=/home/username ; USER=root ; COMMAND=/bin/bashn 

超级怪诞。 我到处找,在互联网上唯一可以find的关于“缺乏新行”的抱怨是指消息本身不是多行的(消息体中没有换行符)。 但是,我无法find任何关于缺less换行符,或者修改/确认消息格式的信息。

原因:我们的系统pipe理员之一修改了RSyslog模板,并在模板末尾的n之前省略了\

位于/etc/rsyslog.conf的RSyslogconfiguration文件允许指定消息的模板:

 # Use default timestamp format #$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $template CustomFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n" $ActionFileDefaultTemplate CustomFormat 

那么,pipe理员已经省略了换行符,导致:

 $template CustomFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%n" 

没有骰子。

总而言之,如果RSyslog处理的日志中有奇怪的格式问题,请检查RSyslog的模板configuration,从/etc/rsyslog.conf