有没有类似于log4j
bash 脚本的东西?我希望能够根据错误的严重程度对错误进行不同的处理。例如,log4j
允许我区分错误、信息、调试等。有没有办法为 bash 做到这一点?
我知道,我可以写一个函数,写入日志,如下例:
LOG () {
echo `date` $* >> /var/log/my_log.log
}
Run Code Online (Sandbox Code Playgroud)
但实际上我想知道像 log4j 这样的东西是否与 bash 相关
为了获得 -错误级别等的能力
大多数系统都有logger
实用程序,它知道如何与syslogd
. 它允许您设置日志级别(严重性)、设施名称、指定要写入的日志文件、发送到syslogd
远程主机、将消息写入STDERR
以及系统日志。
日志语义与诸如 之类的工具提供的语义不太相同log4j
,但是通过将facility.level
设置与消息标签相结合,您可以获得非常接近的结果。
例子
注意:这些示例使用 FreeBSD 版本的logger
. 您的系统可能有不同的选项,因此请阅读您的本地文档!
logger -p local3.info -f /var/log/messages -t MY_LOG_TAG "something interesting happened"
Run Code Online (Sandbox Code Playgroud)
这将发送要记录在信息/var/log/messages
与严重性info
,在local3
设施。它包含一个标记 ( -t MY_LOG_TAG
),该标记包含在每一行中。标签是有用的用于提取日志条目grep
,awk
等等。
logger -h loghost -p mail.crit -s -f /var/log/mail "an unrecoverable error has occurred"
Run Code Online (Sandbox Code Playgroud)
这将crit
在mail
设施中发送带有严重性的消息到远程机器loghost
,以供登录/var/log/mail
。这-s
会导致将消息打印在脚本上STDERR
并将其发送以进行记录。