You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Log4j2配置异常:Logger已加载但日志未写入指定文件

JEE REST API迁移Log4j2日志异常问题排查方案

问题现象

配置monitorAppender滚动文件追加器及ZDAMonitor Logger后,调用LogManager.getLogger("ZDAMonitor").fatal("Test123")时,日志未写入指定文件,反而输出到控制台;Log4j调试日志显示ZDAMonitor Logger已成功注册。环境:WebSphere 8.5.5.22、Java 1.8、Log4j2 2.19.0(Gradle构建)。

排查与解决步骤

1. 处理WebSphere日志框架类加载冲突

WebSphere 8.5.x默认自带IBM日志实现,会优先加载自带类库,导致Log4j2的Appender无法生效。

  • 操作:在WebSphere控制台将应用类加载顺序设为PARENT_LAST:
    控制台路径:应用程序 → 企业应用程序 → 目标应用 → 类加载和更新检测 → 类加载顺序选择"PARENT_LAST"

2. 验证${baseDir}变量解析

配置中的${baseDir}未正确赋值会导致无法创建日志文件,Log4j2自动降级到控制台输出。

  • 检查配置文件是否定义该变量:
    <Configuration>
        <Property name="baseDir">/opt/was/logs/your-app</Property>
        <!-- 其余配置 -->
    </Configuration>
    
  • 或通过JVM参数传递:-DbaseDir=/opt/was/logs/your-app
  • 辅助验证:查看Log4j2调试日志,搜索baseDir相关条目,确认是否解析成功

3. 检查日志目录权限

WebSphere运行用户无目标目录读写权限时,无法创建日志文件,触发控制台 fallback。

  • 操作:
    1. 确认${baseDir}对应的物理目录存在
    2. 赋予WebSphere进程用户(如wasadmin)该目录的读写权限
    3. 手动创建ZDA_monitor.log文件并设置权限后重试

4. 确认Log4j2配置文件加载完整性

即使Logger已注册,Appender可能未被正确初始化。

  • 确保配置文件(如log4j2.xml)放置在WEB-INF/classes目录,或通过JVM参数指定路径:-Dlog4j.configurationFile=/path/to/log4j2.xml
  • 查看Log4j2调试日志,搜索monitorAppender,确认存在类似DEBUG Starting RollingFileAppender monitorAppender的初始化日志

5. 调整Log4j2版本适配WebSphere环境

Log4j2 2.19.0与WebSphere 8.5.5.22的Java 8环境可能存在兼容性问题。

  • 操作:降级至Log4j2 2.17.x LTS版本,更新Gradle依赖:
    implementation 'org.apache.logging.log4j:log4j-api:2.17.4'
    implementation 'org.apache.logging.log4j:log4j-core:2.17.4'
    

内容的提问来源于stack exchange,提问作者CliffAnderson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:30:43