log4j Java日志框架中的标记是什么?使用它们的原因是什么?

1u4esq0p  于 2022-11-06  发布在  Java
关注(0)|答案(1)|浏览(179)

我第一次听说标记是在阅读时:
http://slf4j.org/faq.html
我检查了Logger对象的可用方法:

和找到的接口:

更深入的信息,我从:

但我仍然感到困惑...请注意,我问的是“为什么”,而不是“如何”使用它们,因此这不是以下内容的重复:

  • Best practices for using Markers in SLF4J/Logback
    UPDATE使用标记时,似乎还需要编写自定义Java代码,而不是在 XML.property 文件中进行配置...
    更新2来自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"));
cbwuti44

cbwuti441#

这是问题“Best practices for using Markers in SLF4J/Logback“的重新散列版本my answer
标记可以用来 * 着色 * 或标记 * 单个 * 日志语句。如何使用这些颜色(即标记)完全取决于您。然而,标记的使用似乎有两种常见模式。
1.触发:可以指示某些附加程序在出现特定标记时执行操作。例如,可以将SMTPAppender配置为每当日志记录事件标记为NOTIFY_ADMIN时发送电子邮件,而不管日志级别如何。请参阅回滚文档中的基于标记的触发。您还可以合并日志级别和标记进行触发。
1.过滤:标记对于突出某些有价值的日志语句非常有用。例如,您可以对所有与持久性相关的日志进行着色/标记(在各种和多个类文件中)。然后,您可以过滤"DB":以禁用日志记录,但标记为DB的日志语句除外。有关详细信息,请参阅回滚文档中的chapter on filters(搜索MarkerFilter)。注意,对标记的过滤不仅可以通过回登录来执行,也可以通过日志分析工具来执行。
在Markers出现之前,要实现类似的行为,您可以选择1)使用自定义级别2)使用修改后的记录器名称。SLF 4J API目前不支持自定义级别。至于选项2,加后缀如果需要修改一个或两个记录器,则可以使用记录器名称(或为其添加前缀)。如果需要对3个或更多的记录器进行“子类化”,则该方法将变得不切实际。因为关联的配置文件变得无法管理。
尽管单个标记已经非常有用,但从SLF 4J 2.0版开始,可以为每个日志语句设置 * 多个 * 标记。

相关问题