2013-05-29 19 views
62

我第一次听到关于标记阅读:Java Logging框架中的标记是什么以及使用它们的原因是什么?

http://slf4j.org/faq.html

我检查可用的方法记录仪对象:

,发现接口:

更深入的信息,我得到:

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

UPDATE看来,当你使用标记,你还需要编写自定义的Java代码,而不是做配置XML.property文件...

更新2http://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")); 
+0

要使用标记,您需要使用SLF4J提供的标记API。这就是你的意思是“自定义Java代码”? – Ceki

+0

@Ceki似乎只是使用** Logger.warn(Marker,味精)**没有给你任何好处,直到你写过滤器的自定义类并注册它们... ** logback.xml **的纯语法没有特殊的能力来使用** Marker **(只需用**%marker **打印) – gavenkoa

+1

http://logback.qos.ch/manual/appenders.html中提供了什么“特别” #OnMarkerEvaluator? – Ceki

回答

65

这是一个改头换面的版本my answer问题 “Best practices for using Markers in SLF4J/Logback”。

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

  1. 触发:一些附加器可以指示采取一定的标志物存在的动作。例如,可以将SMTPAppender配置为每当记录事件标记为NOTIFY_ADMIN标记时发送电子邮件,而不考虑日志级别。请参阅logback文档中的marker-based triggering。您还可以结合日志级别和标记进行触发。

  2. 过滤例如,您可以使用颜色“DB”对所有持久性相关日志(在各种和多个类文件中)进行着色/标记。然后,您可以过滤“DB”:禁用日志记录,除了标有数据库的日志语句。有关更多信息,请参阅logback文档中的chapter on filters(搜索MarkerFilter)。

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

相关问题