- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在线程“主”java.lang.ExceptionInInitializerError 中收到错误“异常”由以下原因引起:org.apache.logging.log4j.core.config.ConfigurationException:根据 https://logging.apache.org/log4j/2.x/manual/migration.html 使用 Log4j 1.x 桥从 log4j1.x 迁移到 log4j 2.x 时,没有附加程序可用于 AsyncAppender ASYNC' .
我尝试在“ASYNC”appender 的 appender-ref 中添加“CONSOLE”appender,但它对我不起作用。(引用:https://issues.apache.org/jira/browse/LOG4J2-894)
完整的堆栈跟踪:
线程“main”中的异常 java.lang.ExceptionInInitializerError引起:org.apache.logging.log4j.core.config.ConfigurationException:没有可用于 AsyncAppender ASYNC 的附加程序 在 org.apache.logging.log4j.core.appender.AsyncAppender.start(AsyncAppender.java:117) 在 org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:255) 在 org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530) 在 org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:603) 在 org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:620) 在 org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:226) 在 org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152) 在 org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45) 在 org.apache.logging.log4j.LogManager.getContext(LogManager.java:307) 在 org.apache.log4j.LogManager$PrivateManager.getContext(LogManager.java:215) 在 org.apache.log4j.LogManager.getLogger(LogManager.java:74) 在 org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) 在 org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 在 org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) 在 org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132) 在 org.apache.commons.logging.LogFactory.getLog(LogFactory.java:657) 在 org.springframework.context.support.AbstractApplicationContext.(AbstractApplicationContext.java:159) 在 org.springframework.context.support.AbstractApplicationContext.(AbstractApplicationContext.java:223) 在 org.springframework.context.support.AbstractRefreshableApplicationContext.(AbstractRefreshableApplicationContext.java:88) 在 org.springframework.context.support.AbstractRefreshableConfigApplicationContext.(AbstractRefreshableConfigApplicationContext.java:58) 在 org.springframework.context.support.AbstractXmlApplicationContext.(AbstractXmlApplicationContext.java:61) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:136) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83) 在 com.sm.common.business.security.StrongMailSymmetricEncryptionUtility.(StrongMailSymmetricEncryptionUtility.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>
谢谢。
最佳答案
发生此异常的原因可能有多种。以下是一些:
1) 项目中或你使用的依赖jar中存在重复的log4j配置
2) log4j文件中没有添加appender
3) 如果正确添加了 appender,则两个或多个 log4j 配置发生冲突。
在我的例子中,这是由于配置了两个 log4j2.xml 文件而发生的。
关于java - log4j 1.x 到 2.x 迁移时出现错误 'No appenders are available for AsyncAppender ASYNC',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41820297/
我是一名优秀的程序员,十分优秀!