java main方法 log4j_java-log4j不记录除main之外的其他类的消息

我试图弄清楚如何使log4j在我的项目中工作.我有2个类,一个类名为testWithMain.TestSectionSplit,另一个类名为search.SectionScanner.在TestSectionSplit我打电话

Logger log = Logger.getLogger(TestSectionSplit.class);

PropertyConfigurator.configure(FilePaths.LOGGER_CONFIG);

其中FilePaths.LOGGER_CONFIG指向配置文件.

在SectionScanner类中,我只是创建一个静态字段

private Logger logger = Logger.getLogger(SectionScanner.class);

配置文件看起来像

# =========================

# appenders configuration

# =========================

# console

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.threshold=ALL

log4j.appender.console.layout=org.apache.log4j.PatternLayout

# =========================

# loggers configuration

# =========================

log4j.rootLogger=ALL, console

log4j.logger.search.SectionScanner=ALL, console

问题是,虽然在控制台上正确记录了在TestSectionSplit中记录的消息,但是没有打印来自SectionScanner的消息,给了我此错误消息

log4j:ERROR Attempted to append to closed appender named [console].

如果我注释掉

log4j.logger.search.SectionScanner=ALL, console

在配置文件中,不会打印任何日志消息或错误.

我不明白我在做什么错.

解决方法:

通过在代码中调用PropertyConfigurator.configure(),可以在初始化log4j之后重新配置它.无论首先使用哪种配置进行初始化,它都具有一个名为“ console”的附加程序.当您重新初始化log4j时,该附加程序将关闭,但其他线程正在尝试对其进行写入:因此出错.如果这是您要使用的配置,请从configure your app开始使用它,而不是在应用程序运行时重新初始化日志记录.

标签:log4j,java

来源: https://codeday.me/bug/20191208/2089357.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值