How to log multiline message with logger command?

Solution 1:

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.

Solution 2:

Sure, just replace \n by space as this :

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