bash 有没有类似 log4j 的东西?

mai*_*ash 3 bash logs

有没有类似于log4jbash 脚本的东西?我希望能够根据错误的严重程度对错误进行不同的处理。例如,log4j允许我区分错误、信息、调试等。有没有办法为 bash 做到这一点?

我知道,我可以写一个函数,写入日志,如下例:

LOG ()  { 
           echo `date` $* >> /var/log/my_log.log 
        } 
Run Code Online (Sandbox Code Playgroud)

但实际上我想知道像 log4j 这样的东西是否与 bash 相关

为了获得 -错误级别等的能力

D_B*_*Bye 5

大多数系统都有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),该标记包含在每一行中。标签是有用的用于提取日志条目grepawk等等。

logger -h loghost -p mail.crit -s -f /var/log/mail "an unrecoverable error has occurred"
Run Code Online (Sandbox Code Playgroud)

这将critmail设施中发送带有严重性的消息到远程机器loghost,以供登录/var/log/mail。这-s会导致将消息打印在脚本上STDERR并将其发送以进行记录。