Назад | Перейти на главную страницу

Во всех системных журналах отсутствуют символы новой строки в конце сообщения

У нас есть любопытная проблема, когда все авторизируются /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