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

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

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

echo -e "foo\nbar" | logger

但它显示为 2 个日志。

是否可以作为单一日志进行记录?

答案1

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

使用 grep 等标准实用程序来处理多行日志消息也非常麻烦。根据消息到达的时间,消息还可能会被分割,从而使得追踪相关信息变得更加困难。

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

答案2

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

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

答案3

另一种选择 - 假设你需要保持行与行之间用“换行符”分隔 - 是先写入临时文件,然后用户

logger -t <title> -f <temp-file> 

答案4

您可以执行以下操作:

MESSAGE="this is my message: \nhello \nnewline \nin logger"
logger "$(printf "$MESSAGE")"

相关内容