Я хочу записать многострочное сообщение в системный журнал с помощью команды
echo -e "foo\nbar" | logger
Но это выглядит как 2 журнала.
Можно ли вести журнал как единый журнал?
Регистратор не содержит этой функции, он в основном ориентирован на строку - каждая строка - это новое сообщение.
Многострочные сообщения журнала также представляют собой серьезную проблему с использованием стандартных утилит, таких как grep и т. Д. В зависимости от времени их поступления сообщения также могут разделяться, что затрудняет отслеживание соответствующей информации.
Лучшее решение - регистрировать ваши сообщения как одно сообщение. Как предлагает @Benjamin, вы можете использовать tr или echo -En. Если вам действительно нужно иметь \ n для последующего отображения, используйте tr, чтобы изменить \ n на какой-либо другой символ, который ваша утилита не будет генерировать для записи журнала, а при чтении используйте tr, чтобы преобразовать его обратно в \ n.
Конечно, просто замените \ n пробелом следующим образом:
echo -e "foo \ nbar" | tr '\ n' '' | регистратор
Разделить вывод ...
Пример:
ip route show |while read line; do logger -t TEST $line; done
альтернативой - при условии, что вам нужно сохранить строки, разделенные «новой строкой» - было бы сначала записать во временный файл, а затем пользователь
logger -t <title> -f <temp-file>
Вы можете сделать следующее:
MESSAGE="this is my message: \nhello \nnewline \nin logger"
logger "$(printf "$MESSAGE")"