【问题标题】:log4j.properties - remove classname from outputlog4j.properties - 从输出中删除类名
【发布时间】:2014-06-18 21:33:30
【问题描述】:

我想使用 log4j 日志从 INFO 的输出日志消息中删除时间戳和类名。现在,我的程序似乎没有使用 ConversionPattern 布局行,因为该行甚至没有引用 C,它是拥有记录器对象的 Java 类。

log4j.properties 是这样加载的:

URL logConfigUrl = ClassLoader.getSystemResource("log4j.properties");
PropertyConfigurator.configure(logConfigUrl);

这是我的 log4j.properties 文件内容:

log4j.rootLogger=INFO, stdout
log4j.rootLogger=ERROR, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

现在,输出如下所示:

14:24:17.387 [main] INFO com.nim.tools.recontool.ReconTool

我希望它看起来像这样:

[主要]信息

【问题讨论】:

  • 可能是 log4j.properties 文件没有正确加载。我会先尝试调整一些参数,比如日志级别,看看是否有任何效果。
  • 我很确定它加载正确,但我会检查
  • 它是这样加载的,所以我怀疑它可能加载不正确,否则会抛出错误 URL logConfigUrl = ClassLoader.getSystemResource("log4j.properties"); PropertyConfigurator.configure(logConfigUrl);

标签: java log4j


【解决方案1】:

我认为加载了错误的“log4j.properties”文件,因为输出甚至与您的配置不匹配。

URL logConfigUrl = ClassLoader.getSystemResource("log4j.properties");

加载在类搜索路径中找到的第一个“log4j.properties”。一些包含“log4j.properties”的 jars/dirs 可能已在您的课程之前加载。要验证加载了哪个 log4j.properties,您可以打印出 URL。

要配置您想要的输出,您需要:

log4j.appender.stdout.layout.ConversionPattern=[%t] %-5p: %m%n

【讨论】: