如何使用 logger 命令记录多行消息?

How*_*ard 7 linux ubuntu shell syslog

我想通过命令将多行消息记录到系统记录器中

echo -e "foo\nbar" | logger
Run Code Online (Sandbox Code Playgroud)

但它显示为 2 个日志。

是否可以记录为单个日志?

use*_*517 6

Logger 不包含此功能,它基本上是面向行的——每一行都是一条新消息。

使用标准实用程序(如 grep 等)处理多行日志消息也是一个真正的痛苦。根据它们的到达时间,消息也可能被拆分,从而更难追踪相关信息。

更好的解决方案是将您的消息记录为一条消息。正如@Benjamin 建议您可以使用 tr 或您可以使用 echo -En。如果您确实需要将 \n 用于以后的显示目的,则使用 tr 将 \n 更改为您的实用程序不会生成的其他字符以写入日志,并在读取时使用 tr 将其转换回 \n。


小智 3

当然,只需将 \n 替换为空格,如下所示:

回声-e“foo\nbar”| tr '\n' ' ' | 记录器