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

Log4j2自定义附加程序:错误尝试附加到未启动的附加程序

顾嘉德
2023-03-14
问题内容

我在log4j2中创建了一个自定义附加程序。使用自定义追加程序时,出现以下错误:“ ERROR试图追加到未启动的追加程序”。任何帮助表示赞赏。


问题答案:

Log4j 2将检查每个日志事件附加器是否处于可用状态。您看到的错误是Log4j检测到尚未准备好使用附加程序。

一些附加器需要进行准备才能使用。在start()生命周期的方法是其中追加程序可以做初始化的地方。Log4j不会将事件路由到未处于STARTED状态的附加程序。

如果您的附加程序是通过配置添加的,则Log4j将调用生命周期方法。如果您的附加程序扩展了AbstractAppender,则这将更新状态并且应该足够。否则,请查看AbstractAppender中的生命周期状态管理。

如果您在代码中配置,则可能需要显式调用start()。



 类似资料:
  • 我有一个类,我在其中获取我的所有属性,并在日志记录之前隐藏它们的密码。 我已经迁移到log4j2,并希望测试这个类,检查log4j2的输出。它目前使用log4j并且可以工作,但是当我迁移到log4j2时,我得到了 但是,还有其他与这个mock的交互:mockappender.getName();->在org.apache.logging.log4j.core.config.AbstractConf

  • 问题内容: 我需要将事件记录到系统日志中。我使用lo4j2和syslog附加程序。我的appender阻止如下所示: 如您所见,我有一个带有特定PatternLayout的Console附加程序和RollingFile附加程序。我想对Syslog附加程序使用相同的PatternLayout。但是,系统日志中的日志消息似乎总是使用预定义的布局。我尝试执行以下操作: 但这没有任何作用。syslog消息

  • 我创建了一个自定义追加器,但在运行测试时没有调用它。以下是这些属性的外观: 我的appender被称为WindowsEventLogappender。知道我的档案有什么问题吗?我看到了控制台测试消息,但没有看到来自我的appender的消息。现在我只是在我的自定义追加器中做一个system.out.println来验证它是否被调用。

  • 我正在使用javaagent(带有Javaassit)通过 方法和我对ClassFileTransformer不考虑类的原因很好奇 简短说明: 我的项目中有两个类,javaagent(premain)应用于这两个类 MyMainClass是具有main方法的类 MyLogicReference类不是通过导入引用,在MyMainClass中的... 只对MyMainClass调用ClassFileT

  • 我正在将log4j1升级到log4j2。我在log4j1中创建了一个自定义appender,并在append(LoggingEvent事件)方法中使用事件检索错误堆栈跟踪。getThrowableStrRep()并为每行追加'\t'。 我在log4j2中没有看到getThrowableStrRep。你能帮我解决我们如何在log4j2中做到这一点吗?

  • 我继承了一堆代码,我注意到在tomcat日志中写着 log4j:警告找不到logger(org.springframework.web.context.contextLoader)的附加程序。log4j:警告请正确初始化log4j系统。log4j:警告有关更多信息,请参见http://logging.apache.org/log4j/1.2/faq.html#noconfig。