目前,我正在一个项目中工作,该项目试图在kibana中编写日志。本项目使用 org.slf4j.*
Package 。
当项目通过loggerfactory初始化记录器时,我遇到一个错误。
这是kibana上报告的错误。
ERROR StatusLogger Unable to create custom ContextSelector. Falling back to default.
java.lang.ClassNotFoundException: org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
这个错误不允许它在kibana上写任何东西。我使用log.info(“helloworld”)进行测试。
我已经检查了log4j.xml,看起来很好:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [level:%-5p] %c{1} - %m%n %X{transactionId} %X{requestId} %X{clientId}%n"/>
</layout>
</appender>
<appender name="async" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="1000"/>
<param name="Blocking" value="false"/>
<appender-ref ref="stdout"/>
</appender>
<logger name="com.projectName" additivity="false">
<level value="info"/>
<appender-ref ref="async"/>
</logger>
<root>
<priority value="error"/>
<appender-ref ref="async"/>
</root>
</log4j:configuration>
该项目使用java 11。这是与gradle.build相关的库。 compile "org.slf4j:slf4j-log4j12:1.7.25"
我尝试使用此库的较低版本: implementation ('log4j:log4j:1.2.17')
我认为这是java版本与log4j版本之间的问题,然后我做了一些测试,看起来这不是问题所在。
我尝试了这个出版物:log4j2slf4j绑定
有人面对过这个问题吗?或者有人可以和我分享一下如何寻找解决方案?。
非常感谢你的帮助。
暂无答案!
目前还没有任何答案,快来回答吧!