如何指示 systemd 服务的一行输出的日志级别?

如何指示 systemd 服务的一行输出的日志级别?

我有一个脚本,打算作为 systemd 服务运行。

我知道 stdout 和 stderr 将被路由到 systemd 日志。有什么方法可以让我指示将一行输出视为 INFO 或 ERROR 或任何适当的内容?

答案1

systemd for Developers III:systemd 的复仇我们发现:

本示例中的打印字符串以默认日志优先级 LOG_INFO 进行记录1。有时更改此类打印字符串的日志优先级很有用。当 systemd 解析服务的 STDOUT/STDERR 时,它将查找每行开头的 < > 中包含的优先级值

神奇的数字显然是从syslog(3)所以复制的

$ egrep 'INFO|ERR' /usr/include/sys/syslog.h | fgrep define
#define LOG_ERR     3   /* error conditions */
#define LOG_INFO    6   /* informational */
#define LOG_PERROR  0x20    /* log to stderr as well */

从 TCL 脚本等发出信息或错误消息看起来像

#!/usr/bin/env expect
puts "<3>auuugh"
puts "<6>infos"

相关内容