首页 文章

Java Logging框架中的标记是什么以及使用它们的原因是什么?

提问于
浏览
74

我第一次听到标记时读到:

http://slf4j.org/faq.html

我检查 Logger 对象的可用方法:

并找到接口:

我得到的更深入的信息:

但仍然困惑...请注意,我问为什么,而不是如何使用它们,所以这不是重复:

UPDATE 似乎在使用标记时,您还需要编写自定义Java代码,而不是在XML或.property文件中进行配置...

UPDATE 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"));

1 回答

  • 78

    这是问题“Best practices for using Markers in SLF4J/Logback”的重新版本my answer .

    标记可用于着色或标记单个日志语句 . 你用这些颜色做什么,即标记,完全取决于你 . 然而,对于标记使用,两种模式似乎是常见的(第一种比第二种更常见) .

    • Triggering :可以指示一些appender在某个标记存在的情况下采取行动 . 例如, SMTPAppender 可以配置为每当使用 NOTIFY_ADMIN 标记标记日志记录事件时发送电子邮件,而不管日志级别如何 . 请参阅logback文档中的marker-based triggering . 您还可以组合日志级别和标记以进行触发 .

    • Filtering :您可以使用颜色"DB"对所有与持久性相关的日志(在各种和多个类文件中)进行颜色/标记 . 然后,您可以过滤"DB":禁用日志记录,但标记为DB的日志语句除外 . 有关详细信息,请参阅logback文档中的chapter on filters(搜索MarkerFilter) .

    在Markers出现之前,要实现类似的行为,您可以选择1)使用自定义级别2)使用修改后的 Logger 名称 . SLF4J API目前不支持自定义级别 . 对于选项2,如果需要修改一个或两个 Logger ,则后缀(或前缀) Logger 名称是可行的 . 这种方法变得不实用,因为很快就会有3个或更多的 Logger 被“分类”,因为相关的配置文件变得难以管理 .

相关问题