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

gav*_*koa 95 java logging log4j logback slf4j

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

http://slf4j.org/faq.html

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

并找到接口:

我得到的更深入的信息:

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

更新似乎在使用标记时,您还需要编写自定义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"));
Run Code Online (Sandbox Code Playgroud)

Cek*_*eki 103

这是一个重新发布的版本对" 在SLF4J/Logback中使用标记的最佳实践 "这一问题的回答.

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

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

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

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

  • 也可以在 [SiftingAppender](http://logback.qos.ch/manual/appenders.html#SiftingAppender) 中用于鉴别器 /sf/answers/2138640871/ (2认同)