脚本无法写入 systemd 日志

脚本无法写入 systemd 日志

简而言之:我想systemd通过脚本写信给日记。

这不起作用:

printf "%s\n%s\n%s\n" CODE_FILE=/etc/zsh/zprofile CODE_LINE=31 MESSAGE="could not read /etc/dircolors" | logger --journald

当我执行确切的代码(或任何其他带有打印的变体等)时,日志中没有任何反应。

journalctl这样称呼:

journalctl --full --all --no-pager -n 10

这里有什么问题吗?

答案1

使用systemd-cat。它将管道或程序输出与日志连接起来。

例子:

printf "Write text to the journal" | systemd-cat

结果:

journalctl -xn
[..]
Apr 12 13:37:00 servername [31509]: Write text to the journal

如果您想识别日志记录工具,您可以添加-t选项:

printf "Write text to the journal" | systemd-cat -t yourIdentifier
journalctl -xn
Apr 12 13:37:00 servername yourIdentifier[31833]: Write text to the journal

编辑:要仅显示指定系统日志标识符的消息,请使用 -t 选项:

journalctl -t yourIdentifier

该参数可以指定多次。

答案2

| systemd-cat如果出现以下情况,则不起作用:

  • 该脚本由 systemd 直接执行,并且
  • 脚本已重定向 stdout/stderr ( exec 1>>$LOGFILE)

即使您这样做,这仍然是正确的| tee systemd-cat

在这种情况下,最好的做法是逆转它:

  • 删除标准输出的重定向
  • 让你的printf电话执行| tee -a $LOGFILE

相关内容