bash 有类似 log4j 的东西吗?

bash 有类似 log4j 的东西吗?

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

我知道,我可以编写一个函数,将其写入日志,如下例所示:

LOG ()  { 
           echo `date` $* >> /var/log/my_log.log 
        } 

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

为了获得以下能力——错误级别等等

答案1

大多数系统都有该logger实用程序,它知道如何与syslogd.它允许您设置日志级别(严重性)、设施名称、指定要写入的日志文件、发送到syslogd远程主机、将消息写入STDERR以及系统日志。

日志语义与 等工具提供的语义不太一样log4j,但是通过将facility.level设置与消息标签相结合,您可以实现非常接近的效果。

例子

笔记:这些示例使用 FreeBSD 版本的logger.您的系统可能有不同的选项,因此请阅读您的本地文档!

logger -p local3.info -f /var/log/messages -t MY_LOG_TAG "something interesting happened"

/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"

crit这会将设备中带有严重性的消息发送mail到远程计算机以loghost进行登录/var/log/mail。这-s会导致消息打印在脚本上STDERR并发送到日志中。

答案2

有大量有关通过 shell 全局变量记录 shell 脚本的详细信息。我们可以在 shell 脚本中模拟类似的日志记录:http://www.cubicrace.com/2016/03/log-tracing-mechnism-for-shell-scripts.html

这篇文章详细介绍了 INFO、DEBUG、ERROR 等日志级别。跟踪脚本入口、脚本出口、函数入口、函数出口等详细信息。

样本日志:

在此输入图像描述

答案3

您可能想看看我在 GitHub 上的日志记录实现:

https://github.com/codeforester/base/blob/master/lib/stdlib.sh

它支持五个日志级别(ERROR、WARN、INFO、DEBUG 和 VERBOSE)以及多个记录器。

相关内容