当前位置: 首页 > 面试题库 >

log4j.properties文件-同一类中的多个记录器

伯彦君
2023-03-14
问题内容

我想log4j在我的应用程序中使用两个不同的记录器,并且在他们向其尊重日志中写入的内容之间没有“重叠”。

例如:

  • Logger1写入与一组系统事件相关的INFO事件
  • Logger2写入与另一组系统事件有关的INFO事件
  • 两次不应在日志中出现任何条目

我的log4j.properties如下:

log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n

log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n

我的Java代码如下:

public static void main(String[] args) {
    PropertyConfigurator.configure(Client.class
            .getResource("/log4j.properties"));
    xdasLogger = Logger.getLogger("xdasLogger");
    logger = Logger.getLogger(Client.class);

    logger.info("normal");
    xdasLogger.info("xdas");
}

但是我的控制台输出如下:

normal
2012-06-28 09:52:44,580 INFO  xdasLogger - xdas
xdas

注意,“ xdas”由logger和同时记录xdasLogger,这是不希望的。

有谁知道我需要对log4j.properties进行哪些更改才能将控制台输出更改为以下内容?

normal
2012-06-28 09:52:44,580 INFO  xdasLogger - xdas

解决方案(取自可接受的答案):

log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas

log4j.additivity.org.apache=false
log4j.additivity.xdasLogger=false

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n

log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n

问题答案:

尝试将记录器的可加性设置为false。这将避免传播到rootLogger。

log4j.additivity.org.apache=false
log4j.additivity.xdasLogger=false


 类似资料:
  • 问题内容: 我在一个文件中有多个html文件。 结果是我弄乱了html文件。 如何在不删除其余标签的情况下更正此错误? 我正在使用python生成html文件。 如果使用,我会得到一个漂亮的html页面。 如果我第二次使用它,则页面会变形。 我们可以使用iframe纠正此问题吗?有人可以举个例子吗? 问题答案: 一个HTML文档只能有一个标签和一个标签。如果仅将多个HTML文档放在一起,则它将是无

  • 问题内容: 我有一个JAVA类,用于启动具有唯一ID的各种线程。每个线程应登录到一个唯一的日志文件中,该文件以ID.log命名。 因为我仅在运行时获得唯一ID,所以我必须以编程方式配置Log4J: 现在,如果我按顺序启动作业,此方法就可以正常工作- 但是,当我同时启动2个线程(同一类)时,会创建两个日志,但日志混合在一起:第二个线程同时登录第一个和第二个日志。 我如何确保每个实例都是唯一的?我已经

  • 给定:我在Kafka中有两个主题,假设主题A和主题B。Kafka流从主题A中读取一条记录,对其进行处理,并产生与所消耗记录相对应的多条记录(假设recordA和recordB)。现在的问题是我如何使用Kafka流来实现这一点。 在这里,读取的记录是消息;处理之后,它返回一个消息列表。如何将此列表划分为两个生产者流?任何帮助都将不胜感激。

  • 我只想记录一个包中的两个类。在标准的javadoc工具中,它应该是这样的:C: 我如何在maven javadoc插件中做到这一点?

  • 我有一个简单的问题,但我想不出来。使用同一类型的多个附加器(RollingFile)和Log4j2属性文件格式的单个记录器的正确语法是什么? 作为背景,我使用的是Karaf4.2。7使用pax日志记录。我的日志配置文件是属性格式。 将两个追加器放在用逗号分隔的最后一行不起作用。如果我只有一个appender或另一个appender,它就会工作。我也试过了 这些都不管用。我似乎在网上找不到任何关于如