我第一次听说标记是在阅读时:
http://slf4j.org/faq.html
我检查了Logger对象的可用方法:
- http://www.slf4j.org/api/org/slf4j/Logger.html
- http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Logger.html
和找到的接口:
- http://www.slf4j.org/api/org/slf4j/Marker.html
- http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Marker.html
更深入的信息,我从:
但我仍然感到困惑...请注意,我问的是“为什么”,而不是“如何”使用它们,因此这不是以下内容的重复:
- 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"));
1条答案
按热度按时间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版开始,可以为每个日志语句设置 * 多个 * 标记。