我们有一个奇怪的问题,所有日志/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
太奇怪了。我到处找,在互联网上唯一能找到的关于“缺少换行符”的抱怨是指消息本身不是多行的(消息正文中缺少换行符)。但是我找不到任何关于缺少尾随换行符或修改/确认消息格式的信息。
答案1
原因:我们的一位系统管理员修改了 RSyslog 模板,并省略了模板末尾的\
the 之前的the。n
RSyslog 配置文件位于,/etc/rsyslog.conf
允许指定消息的模板:
# 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
嗯,管理员省略了\
换行符,导致:
$template CustomFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%n"
没有骰子。
总而言之,如果您在 RSyslog 处理的任何日志中遇到奇怪的格式问题,请检查 RSyslog 的模板配置,从/etc/rsyslog.conf