Java 日志框架中的标记是什么? 使用它们的理由是什么?

我第一次听说记号笔是在读书的时候:

Http://slf4j.org/faq.html

我检查了 伐木工对象的可用方法:

并找到了接口:

我得到的更深入的信息是:

但我仍然感到困惑... 请注意,我要求 为什么,而不是 怎么做使用它们,所以这不是一个复制品:

UPDATE 似乎当您使用标记时,您还需要编写定制的 Java 代码,而不是在 XML。财产文件中进行配置..。

更新2 来自 < a href = “ http://logback.qos.ch/Manual/appenders.html # OnMarkerevalator”rel = “ norefrer”> http://logback.qos.ch/manual/appenders.html#onmarkerevaluator

Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN");
logger.error(notifyAdmin,
"This is a serious an error requiring the admin's attention",
new Exception("Just testing"));
86128 次浏览

这是对问题“ 在 SLF4J/Logback 使用标记的最佳实践”的重新散列版本 我的回答

标记可用于 颜色或标记 单身日志语句。你怎么处理这些颜色,也就是标记,完全取决于你。然而,标记的使用似乎有两种常见的模式。

  1. 触发 : 某些附加物可以被指示在某个标记出现的情况下采取行动。例如,无论日志级别如何,只要用 NOTIFY_ADMIN标记标记日志事件,就可以将 SMTPAppender配置为发送电子邮件。请参阅日志回溯文档中的 基于标记的触发。还可以将日志级别和标记组合起来用于触发。

  2. 筛选 : 标记对于突出某些有价值的日志语句非常有用。例如,您可以使用颜色“ DB”对所有与持久性相关的日志(在各种和多个类文件中)进行着色/标记。然后,您可以筛选 "DB":以禁用日志记录(除了用 DB 标记的日志语句之外)。有关更多信息,请参见 logback 文档中的 过滤器一章(搜索 MarkerFilter)。请注意,对标记的过滤不仅可以通过日志回滚执行,还可以通过日志分析工具执行。

在 Markers 出现之前,为了实现类似的行为,您可以选择1)使用自定义级别2)使用修改后的日志记录器名称。SLF4JAPI 目前不支持自定义级别。对于选项2,如果需要修改一个或两个日志记录器,则可以使用后缀(或前缀)日志记录器名称。一旦需要对3个或更多的日志记录器进行“子类化”,这种方法就变得不切实际,因为相关的配置文件变得无法管理。

尽管单个标记已经非常有用,但是在 SLF4J 版本2.0中,可以为每个日志语句设置 多个标记。