【问题标题】:Log4j2 Custom appender: ERROR Attempted to append to non-started appenderLog4j2 自定义附加程序:错误尝试附加到未启动的附加程序
【发布时间】:2017-01-06 19:26:03
【问题描述】:

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

【问题讨论】:

    标签: java logging configuration log4j log4j2


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢@Remko。我扩展了 AbstractAppender 并使用 XML 配置了 appender。我将根据您的建议调查 start() 方法调用。谢谢。
    • @Remko Popma 在多线程的情况下,显式调用 start() 方法也会导致此问题。是否应该将 start() 调用放在同步块中?
    • 我认为应用程序不应该手动调用start()。实现LifeCycle 的自定义插件可以实现此方法。 log4j 框架会调用 start 方法。
    • 即如果你像我一样覆盖了它,你可能需要打电话给super.start()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多