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

Как записать многострочное сообщение с помощью команды logger?

Я хочу записать многострочное сообщение в системный журнал с помощью команды

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")"