У нас есть любопытная проблема, когда все авторизируются /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
Супер странно. Я искал повсюду, и единственные жалобы на «отсутствие новых строк», которые я могу найти в Интернете, относятся к самим сообщениям, которые не являются многострочными (отсутствие новых строк в теле сообщения). Однако я не могу найти ничего об отсутствии завершающих символов новой строки или об изменении / подтверждении формата сообщений.
Причина: Один из наших системных администраторов изменил шаблон RSyslog и пропустил \
перед 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