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

多个根记录器,带有日志回传条件

白学
2023-03-14

我的配置可以包含...至多一个 元素...

但后来在同一篇文章中,当讨论条件句时,我看到:

<configuration debug="true">
  <if condition='property("HOSTNAME").contains("torino")'>
    <then>
      <appender name="CON" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
          <pattern>%d %-5level %logger{35} - %msg %n</pattern>
        </encoder>
      </appender>
      <root> <------ root logger #1
        <appender-ref ref="CON" />
      </root>
    </then>
  </if>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${randomOutputDir}/conditional.log</file>
    <encoder>
      <pattern>%d %-5level %logger{35} - %msg %n</pattern>
   </encoder>
  </appender>

  <root level="ERROR"> <------ root logger #2
     <appender-ref ref="FILE" />
  </root>
</configuration>

注意,有两个 元素!我非常困惑,因为我没有看到任何 元素,而且我假设文件附加器和第二个根记录器仍然在运行,即使主机名是“torino”。

这是一个有效的例子吗?当一个 记录器不在 中时,为什么在这种情况下允许两个 记录器

我错过了什么???

共有1个答案

窦伟
2023-03-14

免责声明:我是日志项目的维护者。

这一点绝对值得在日志记录文档中加以澄清。你能在http://jira.qos.ch上提交一份错误报告吗?引用这个StackOverflow条目就足够了。

至于哪个根记录器是活动的,假设条件为true,它们将都是活动的。名为FILE和CON的附加程序都将附加到根记录器。该级别将设置为上次设置的值。请注意,条件中的根元素没有设置级别。

 类似资料:
  • 我使用的是播放框架,其中日志是默认的记录器引擎。为了便于跟踪,我希望将两个不同的活动(和)记录在两个单独的文件中。为此,我有两个追加器和两个记录器。每个记录器都用特定的appender标记。 我希望通过事务记录器(如登录或注册相关活动(如 但不管用。有什么想法吗? 我所说的“不工作”是指相同的日志被附加到两个记录器中,而不是特定于特定的日志。例如。如果我从播放代码调用,事务和登录记录器都将用户X已

  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • 现在,问题是,当我以以下方式进行日志记录时: 尽管根记录器级别被设置为“错误”,但日志条目仍然存在于两个日志文件中。然而,当我去掉“it.pkg.testpkg.service”记录器(通过注释或删除它)时,条目停止进入根记录器。我不太清楚这是怎么回事。 目前,我已经找到了一个临时解决方案,方法是在“root_file_appender”中添加以下条目: 谢了。

  • 我正在将一个应用程序从Log4J 1.2.16迁移到Log4J 2.13.3。为此,我使用log4j21.2到2.13.3桥。在我自己的开发机器上,一切都运转良好。但是,当我将应用程序部署到测试服务器时,日志只会发送到根日志记录器,我定义的其他日志文件保持为空。 配置文件完全相同,只是附件中的路径不同。我的开发机器运行Windows,测试服务器运行Linux。该应用程序已部署到Weblogic 1

  • ,日志记录将进入一个文件; (路径)/service_name/service_name.log 我想用logback复制这种行为,但在logback.xml配置中获取“logger”名称时遇到了真正的困难。它可以在log encoder.pattern中看到,即“%d%-5level%logger{35}-%msg%n”。

  • 我需要为一个相当具体的设置设置日志记录。简而言之,我想在两个不同的“父”模块中处理来自一段通用库代码的日志记录。 app_one_main和app_two_main都导入lib_module(代码如下)。 这些模块显然不共享相同的包结构,因此默认情况下,如果我使用,来自lib_module的日志记录消息不会传播到app_one或app_two app_one和app_two将在同一个Python会