当前位置: 首页 > 知识库问答 >
问题:

在log4j 1. x到2. x迁移时出错“AsyncAppender ASYNC没有可用的附加程序”

越俊艾
2023-03-14

我在线程“main”java中遇到错误异常。lang.ExceptionInInitializerError引起的错误:org。阿帕奇。登录中。log4j。果心配置。ConfigurationException:从log4j1迁移时,没有可用于AsyncAppender ASYNC的appender。x到log4j 2。x使用Log4j 1。x桥根据https://logging.apache.org/log4j/2.x/manual/migration.html.

我曾尝试在'ASYNC'appender的appender ref中添加'CONSOLE'appender,但它对我不起作用。(参考:https://issues.apache.org/jira/browse/LOG4J2-894)

完整堆栈跟踪:

线程“main”中的异常org.apache.logging.log4j.core.impl.ExceptionInSynalizerError由以下原因引起:actory.getConfigurationException:AsyncAppender ASYNC在actory.java:152AsyncAorg.apache.logging.log4j.core.impl.(AsyncAactory.get)在actory.java:45AbstractCorg.apache.logging.log(AbstractCanager.get)anager.java:307LoggerCorg.apache.log配置(LoggerCanager.get)在anager.java:215LoggerCorg.apache.log(LoggerContext.java:603)在org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:620)在org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:226)在java.lang.Log4jContextForg.apache.logging.log4j.core.config.Context(Log4jContextForg.apache.logging.log4j.core.appender.)ppender.startLog4jContextFppender.java:117Context(Log4jContextForg.apache.logging.log4j.core.config.)在onfiguration.start4j。LogMonfiguration.java:255Context(LogMorg.apache.logging.log4j.core.)在ontext.set4j。LogManager$Private ateMontext.java:530Context(LogMorg.apache.logging.log4j.core.)在ontext.reconfigure4j。LogManager. getLogger(LogManager. java: 74)在org. slf4j. imp。Log4jLoggerFacory. getLogger(Log4jLoggerFacory. java:AbstractReFreshableConfigApplication Context.(AbstractReFreshableConfigApplication Context. java: 58)at org. springframe. conttext. support。AbstractXmlApplication Context.(AbstractXmlApplication Context. java: 61)at org. springframe. conttext. support。ClassPathXmlApplication Context.(ClassPathXmlApplication Context. java: 136)at org. springframe. cont. support。ClassPathXmlApplication Context. java: 83)at com. sm. public. business. security。StrongMailSymmetricEncryptionUtics。(StrongMailSymmetricEncryptionUtily. java: 53)

**我的log4j2。xml**:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Async name="ASYNC">
      <AppenderRef ref="R"/>
      <AppenderRef ref="CONSOLE"/>
    </Async>
   <Async name="ASYNC_WARN">
     <ThresholdFilter level="WARN"/>
     <AppenderRef ref="R"/>
     <AppenderRef ref="CONSOLE"/>
   </Async
    <Console name="CONSOLE" target="SYSTEM_OUT">
      <PatternLayout pattern="%d %-5p [%t] %C{2} - %m%n"/>
    </Console>   
 </Appenders>

 <Loggers>    
    <Logger name="com.sm" level="WARN" additivity="false">
      <AppenderRef ref="ASYNC"/>
    </Logger> 
    <Logger name="com.sm.random" level="WARN" additivity="false">
      <AppenderRef ref="ASYNC_WARN"/>
    </Logger> 
    <Logger name="com.sm.services" level="WARN" additivity="false">
      <AppenderRef ref="ASYNC"/>
    </Logger>

    <Root level="WARN">
      <AppenderRef ref="ASYNC"/>
    </Root>
  </Loggers>
</Configuration>

谢谢

共有3个答案

汪典
2023-03-14

在我的例子中,这是因为日志目录访问权限被拒绝

冉子石
2023-03-14

此外,异步附加器有一个

邓季
2023-03-14

发生此异常可能有多种原因。以下是一些:

1)项目中或您使用的依赖jar中存在重复的log4j配置

2) log4j文件中未添加附加器

3)如果正确添加了附加程序,则两个或多个log4j配置发生冲突。

在我的例子中,发生这种情况是因为两个log4j2。已配置xml文件。

 类似资料:
  • 嗨,我遇到了一些使用log4j的代码。我想移动到log4j2。从http://logging.apache.org/log4j/2.x/manual/migration.html中,我发现可以使用log4j-1.2-api.jar。我有以下问题: > 在代码中,我有一个自定义的appender(正如链接中给出的,我不应该使用类appender的内部),这意味着我不能使用log4j-1.2-api.

  • 在我们当前的项目中,我们使用Java8,SpringBoot1.5.4。ApacheCamel 2.17.1版团队计划将Camel升级到3.4版。因为它支持Java8。我看到了camel文档,其中声明将从3.4中放弃对Java8的支持。X版本之后,但很难找到与camel 3.4一起使用所需的spring boot版本的兼容版本。我需要升级spring启动版本吗?如果是的话,会是哪个版本,或者在哪里

  • 我开发了一个web服务应用程序,它可以很好地与jersey 1.x(1.16)一起工作。我最近试图迁移到最新的稳定的jersey 2.8版本 我删除了V1.16的所有jersey jar文件,然后从链接-https://jersey.java.net/download.html下载了V2.8的jersey jar 根据文档,我了解到,我应该有最新的servlet jar,servlet JAR2.

  • 新的中间件签名 Koa v2 引入了新的中间件签名。 旧签名中间件(v1.x)支持将在 v3 中删除 新的中间件签名是这样的: // 使用异步箭头方法 app.use(async (ctx, next) => { try { await next() // next 现在是一个方法 } catch (err) { ctx.body = { message: err

  • Figure: Great Migration by gekkodigitalmedia licensed under Public Domain ()