当前位置: 首页 > 知识库问答 >
问题:

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

万俟渝
2023-03-14

我第一次听说记号是在看书的时候:

http://slf4j.org/faq.html

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

    null
    null

我从以下方面获得了更深入的信息:

  • http://logback.qos.ch/manual/filters.html

但我还是一头雾水...请注意,我问的是为什么,而不是如何使用它们,所以这不是:

    null
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个答案

宋奇希
2023-03-14

这是我对“在SLF4J/logback中使用标记的最佳实践”问题的一个重新散列的版本。

标记可用于为单个日志语句着色或标记。你用这些颜色做什么,即标记,完全由你自己决定。然而,对于标记的使用,两种模式似乎是常见的。

>

  • 触发:可以指示某个附加程序在某个标记存在的情况下采取行动。例如,可以将SMTPapPender配置为无论日志级别如何,只要日志事件被NOTIFY_ADMIN标记就发送电子邮件。请参阅日志记录文档中的基于标记的触发。您还可以组合日志级别和标记进行触发。

    筛选:标记对于使某些有价值的日志语句脱颖而出非常有用。例如,您可以用颜色“db”为所有与持久性相关的日志(在各种和多个类文件中)着色/标记。然后可以筛选“db”:禁用日志记录,但标记为db的log语句除外。有关更多信息(搜索MarkerFilter),请参阅日志记录文档中关于筛选器的章节。请注意,对标记的筛选不仅可以通过logback执行,也可以通过日志分析工具执行。

    在标记出现之前,为了实现类似的行为,您有选项1)使用自定义级别2)使用修改的记录器名称。SLF4J API目前不支持自定义级别。至于选项2,如果需要修改一个或两个记录器,则可以使用后缀(或前缀)记录器名称。当需要“子类化”3个或更多的记录器时,该方法变得不切实际,因为关联的配置文件变得不可管理。

    尽管单个标记已经非常有用,但SLF4J的下一个版本,即2.0版,将允许每个日志语句使用多个标记。

  •  类似资料:
    • 问题内容: 第一次阅读时我听说标记: 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.ht

    • 问题内容: 这个问题会定期被问到,但是我长期以来一直认为现有的Java日志记录框架过于复杂和设计过度,我想看看有什么新功能。 在我们当前的项目中,我遇到了一个更关键的问题,因为我们已经将JSON标准化为人类可读的数据编码,而且我看到的大多数日志记录框架都需要XML。我真的希望避免在我的应用程序配置的95%中使用JSON,而在其余部分中仅由于日志记录框架而避免使用XML(实际上,我讨厌XML用于文本

    • 而且,根据这些文章,我发现Log4J2比Logback具有更好的性能: https://stackify.com/compare-java-logging-frameworks https://blog.overops.com/the-logging-olympics-a-race-between-todays-top-5-logging-frameworks 我的假设是,Pivotal选择Log

    • https://blog.overops.com/the-logging-olympics-a-race-between-todays-top-5-logging-frameworks log4j、slf4j和logback之间有什么区别? https://www.sitepoint.com/which-java-logging-framework-haves-the-performance/

    • 问题内容: 当在标记界面中没有什么要实现的东西时,实现它有什么用? 问题答案: 在Java的早期版本中,标记接口是声明有关类的元数据的唯一方法。例如,可序列化标记接口使类的作者可以说他们的类在进行序列化和反序列化时将表现正确。 在现代Java中,标记接口没有位置。它们可以完全由Annotations代替,从而具有非常灵活的元数据功能。如果你具有有关类的信息,并且该信息永不更改,则注释是表示它的非常

    • 在哪些情况下,应该使用? 是否只是为了合法性问题? 如果是,那么问题是什么? 因为我仍然使用开发我的所有项目