首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >log4j-1.2-api桥ClassNotFoundException:org.apache.log4j.RollingFileAppender

log4j-1.2-api桥ClassNotFoundException:org.apache.log4j.RollingFileAppender
EN

Stack Overflow用户
提问于 2022-02-16 20:41:57
回答 1查看 1.2K关注 0票数 2

我试图将我的应用程序从log4j迁移到log4j2。根据官方手册,我的maven依赖项中有org.apache.logging.log4j:log4j-1.2-api:2.17.1org.apache.logging.log4j:log4j-api:2.17.1org.apache.logging.log4j:log4j-core:2.17.1。我使用log4j.properties文件,因此启用了兼容性模式(-Dlog4j1.compatibility=true)。RollingFileAppender在我的log4j.properties文件中配置:

代码语言:javascript
运行
复制
log4j.appender.A2=org.apache.log4j.RollingFileAppender

我得到以下错误:

代码语言:javascript
运行
复制
2022-02-16 21:04:20,396 main ERROR Unable to create Appender org.apache.log4j.RollingFileAppender due to ClassNotFoundException:org.apache.log4j.RollingFileAppender

官方手册认为,RollingFileAppender是一个受支持的组件。在迁移到log4j2之前,我有log4j2依赖项,它包含org.apache.log4j.RollingFileAppender类。不幸的是,log4j-1.2-apilog4j-apilog4j-core库中没有一个包含这个类。如果手动说支持RollingFileAppender组件,我不明白为什么log4j桥中没有RollingFileAppender。我发现了类似的问题,但没有一个令人满意的答案。如何迁移RollingFileAppender

更新

这是我的log4j.properties文件:

代码语言:javascript
运行
复制
log4j.rootCategory=INFO, A1, A2

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A2=org.apache.log4j.RollingFileAppender

log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d%m%M %n

log4j.appender.A2.file=C:/projects/test/Log.log
#log4j.appender.A2.layout=org.apache.log4j.PatternLayout
#log4j.appender.A2.layout.ConversionPattern=[%d{dd.MM HH.mm.ss.SSS} %-5p %-20c{1}] : %m%n
#log4j.appender.A2.MaxFileSize=10000KB
#log4j.appender.A2.MaxBackupIndex=3

我加了-Dlog4j2.debug=true。有很多原木。我选择了有趣的日志:

代码语言:javascript
运行
复制
TRACE StatusLogger Trying to find [log4j.properties] using context class loader jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc.
DEBUG StatusLogger Not in a ServletContext environment, thus not loading WebLookup plugin.
DEBUG StatusLogger PluginManager 'Log4j Builder' found 18 plugins
DEBUG StatusLogger Parsing for [root] with value=[INFO, A1, A2].
DEBUG StatusLogger Level token is [INFO].
DEBUG StatusLogger Logger root level set to INFO
DEBUG StatusLogger Parsing appender named "A1".
DEBUG StatusLogger PluginManager 'Converter' found 47 plugins
DEBUG StatusLogger Starting OutputStreamManager SYSTEM_OUT.false.false
DEBUG StatusLogger Adding appender named [A1] to loggerConfig [].
DEBUG StatusLogger Parsing appender named "A2".
WARN StatusLogger Unable to create File Appender, no file name provided
ERROR StatusLogger Unable to create Appender org.apache.log4j.RollingFileAppender due to ClassNotFoundException:org.apache.log4j.RollingFileAppender
DEBUG StatusLogger Appender named [A2] not found.
DEBUG StatusLogger Finished configuring.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-17 10:39:23

以下消息解释了配置失败的原因:

代码语言:javascript
运行
复制
WARN StatusLogger Unable to create File Appender, no file name provided

这是由于Log4j 1.x桥与原始Log4j 1.x之间的兼容性问题造成的:属性名称必须以大写字母(cf )开头。LOG4J2-3316)。这将在下一个版本中得到解决。

在此之前,您可以使用:

代码语言:javascript
运行
复制
log4j.appender.A2.File=C:/projects/test/Log.log

(以大写F表示)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71149004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档