WSO2 APIM 4.0.0中Jar包System.out.println日志未输出至Carbon日志的咨询
解决WSO2 APIM 4.0.0中Jar包System.out.println日志输出失效问题
APIM 4.0.0对日志组件做了更新,导致之前可行的System.out.println输出到Carbon日志的逻辑失效,以下是无需改用LogFactory的恢复方案:
1. 修正Log4j2配置文件
打开<APIM_HOME>/repository/conf/log4j2.properties,做以下检查和修改:
确认Console Appender配置
确保存在捕获System.out的Console Appender,缺失则手动添加:
appender.console.type = Console appender.console.name = STDOUT appender.console.target = SYSTEM_OUT appender.console.layout.type = PatternLayout appender.console.layout.pattern = [%d] %5p {%c} - %m%n
添加Stdout专属Logger
增加针对stdout的Logger配置,绑定到上述STDOUT Appender:
logger.stdout.name = stdout logger.stdout.level = INFO logger.stdout.additivity = false logger.stdout.appenderRef.STDOUT.ref = STDOUT
检查Root Logger关联
确认Root Logger的appenderRef包含STDOUT,保证控制台输出能写入Carbon日志文件:
rootLogger.level = INFO rootLogger.appenderRef.console.ref = STDOUT rootLogger.appenderRef.file.ref = CARBON_LOGFILE
2. 保留启动脚本的默认重定向逻辑
不要修改<APIM_HOME>/bin/wso2server.sh(Linux)或wso2server.bat(Windows)里的System.out/err重定向代码。WSO2默认会自动将控制台输出转写到Carbon日志,改动脚本会打断该逻辑。
3. 调整Jar包部署目录
若Jar包当前放在repository/components/lib,可尝试移至repository/components/dropins,反之亦然。类加载顺序变化可能导致System.out输出被拦截,更换目录可规避类加载冲突问题。
4. 匹配日志级别
如果Root Logger或stdout Logger的级别设为WARN及以上,System.out.println的输出(默认对应INFO级别)会被过滤。将对应Logger的级别调整为INFO或DEBUG,确保输出能被正常记录。
内容的提问来源于stack exchange,提问作者Hamza Iqbal
相关产品推荐
相关产品推荐

