I want to log a multiline message into the system logger via the commabnd

echo -e "foo\nbar" | logger

But it appear as 2 logs.

Is it possible to log as a single log?


Logger doesn't contain this functionality it is basically line orientated - every line is a new message.

Multi-line log messages are also a real pain to deal with using standard utilities like grep etc. Depending on their arrival time the messages could also get split making it harder to track down relevant information.

A better solution is to log your messages as a single message. As @Benjamin suggests you can use tr or you could use echo -En. If you really need to have the \n for later display purposes then use tr to change the \n to some other character that your utility will not generate to write the log and when reading use tr to convert it back to a \n.


Sure, just replace \n by space as this :

echo -e "foo\nbar" | tr '\n' ' ' | logger


an alternative - assuming you need to keep the lines separated by 'newline' - would be to write first to a temp file, and then user

logger -t <title> -f <temp-file> 
  • This still inserts each line as a separate log message. – Iain Jun 28 '14 at 14:30

Split the output...

ip route show |while read line; do logger -t TEST $line; done

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.