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

Log4J2(2.5)中的可加性

裴英才
2023-03-14

根据http://logging.apache.org/log4j/2.x/manual/configuration.html的Log4J2手册,使用

...
      <Loggers>
        <Logger name="com.foo.Bar" level="trace">
          <AppenderRef ref="Console"/>
        </Logger>
        <Root level="error">
          <AppenderRef ref="Console"/>
        </Root>
      </Loggers>
...

并记录语句,如

Logger barLogger = LogManager.getLogger(Bar.class);
barLogger.info("A simple info message");

然而,我得到了两次信息,即。

“简单信息消息”

“简单信息消息”

public class MyApp {
 
    // Define a static logger variable so that it references the
    // Logger instance named "MyApp".
    private static final Logger logger = LogManager.getLogger(MyApp.class);
 
    public static void main(final String... args) {
 
        // Set up a simple configuration that logs on the console.
 
        logger.trace("Entering application.");
        Bar bar = new Bar();
        if (!bar.doIt()) {
            logger.error("Didn't do it.");
        }
        logger.trace("Exiting application.");
    }
}
 
public class Bar {
  static final Logger logger = LogManager.getLogger(Bar.class.getName());
 
  public boolean doIt() {
    logger.entry();
    logger.error("Did it again!");
    return logger.exit(false);
  }
}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="com.foo.Bar" level="trace">
      <AppenderRef ref="Console"/>
    </Logger>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>
17:13:01.540 [main] TRACE com.foo.Bar - entry
17:13:01.540 [main] TRACE com.foo.Bar - entry
17:13:01.540 [main] ERROR com.foo.Bar - Did it again!
17:13:01.540 [main] TRACE com.foo.Bar - exit (false)
17:13:01.540 [main] TRACE com.foo.Bar - exit (false)
17:13:01.540 [main] ERROR MyApp - Didn't do it.
00:45:49.951 [main] TRACE com.foo.Bar - entry
00:45:49.951 [main] TRACE com.foo.Bar - entry
00:45:49.951 [main] ERROR com.foo.Bar - Did it again!
00:45:49.951 [main] ERROR com.foo.Bar - Did it again!
00:45:49.951 [main] TRACE com.foo.Bar - exit with(false)
00:45:49.951 [main] TRACE com.foo.Bar - exit with(false)
00:45:49.951 [main] ERROR com.foo.MyApp - Didn't do it.

共有1个答案

胡景澄
2023-03-14

仅使用第一个匹配记录器的日志级别接受或拒绝日志事件。一旦它被接受,它将被传递给所有父记录器,不管它们指定了什么级别。我以为文件上写得很清楚,但也许不清楚。

 类似资料:
  • 2.5 目录加密 在Kali中提供了一个目录加密工具TrueCrypt。该工具是一款开源的绿色加密卷加密软件,不需要生成任何文件即可在硬盘上建立虚拟磁盘。用户可以按照盘符进行访问,所以虚拟磁盘上的文件都被自动加密,访问时需要使用密码解密。TrueCrypt提供多种加密算法,包括AES、Serpent、Twofish、AES-Twofish和AES-Twofish-Serpent等。本节将介绍Tru

  • 在发布这个问题之前,我已经做了我的研究,关于我没有正确使用additivity属性的问题,下面是我的log4j2.xml的一个片段,我试图实现的是,在记录器中定义的每个appender ref应该只附加它所定义级别的日志,但是所有的appender都附加了所有日志消息,而不管日志级别如何,因此,例如,调试记录器仍然得到了我不想要的错误消息。如有任何投入,将不胜感激。

  • 操作步骤: ①以编辑状态进入地图,点击左侧图例面板中要使用的图层,所选图层的边缘显示为蓝色,表示新添加的标注将绘制在此图层上。 ②点击地图右上方工具栏上的"搜索"图标。 ③弹出搜索框。 ④在搜索框内输入关键字(如:天安门)后,点击搜索/回车。 ⑤在左边的搜索结果列表框中选择正确的地点,点击信息窗上的"添加点"按钮。 ⑥点击"完成"添加记录成功。 操作动图: [查看原图]

  • 我正在迁移log4j1.2。8至log4j 2.3。一切正常,除此之外,我没有为PropertyConfiguration找到任何替代品。 是否有其他类来处理PropertyConfiguration之前所做的工作?

  • 我有麻烦配置"DefaultRolloverStrategy"log4j2.xml做以下工作:- 确保只保留最后4个日志文件,并删除旧的日志文件。所以请明确,最后4个日志文件可能在数天内或同一天,因此,最后4个日志文件可能具有相同的日期或跨越不同的日期。 下面是log4j2的内容。xml 我运行我的应用程序如下所示 日志是在调用上述命令的同一目录中生成的。 下面是日志文件的历史记录示例:- “De

  • 在log4j2中旋转OnStartupTriggeringPolicy上的文件时,将使用索引1、2、3到7创建7次文件,如下所示。之后,写第一个就结束了。 有人能告诉我如何在log4j2中增加文件索引的数量吗?