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

WebLogic 14.1.2.0.0集成Log4j2后控制台无日志的配置问题

WebLogic 14.1.2.0.0 配置Log4j2控制台日志不显示的解决步骤

针对你遇到的Log4j2日志无法在WebLogic控制台显示的问题,可按以下步骤排查和修复:

1. 确保WebLogic Log4j集成参数生效

仅在脚本中添加-Dweblogic.log.Log4jLoggingEnabled=true可能因脚本加载顺序问题不生效,推荐通过WebLogic控制台配置启动参数:

  • 登录WebLogic控制台,进入服务器 -> 选择目标服务器 -> 配置 -> 服务器启动
  • 在“参数”栏添加-Dweblogic.log.Log4jLoggingEnabled=true,同时可追加-Dlog4j.debug=true(用于输出Log4j2自身的调试日志,定位配置加载问题)
  • 重启服务器使参数生效

2. 解决类加载冲突问题

WebLogic自带的日志组件可能与应用中的Log4j2类冲突,需配置应用优先加载自身的Log4j2类:

  • 若为Web应用,在WEB-INF/weblogic.xml中添加如下配置:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">
    <container-descriptor>
        <prefer-application-packages>
            <package-name>org.apache.logging.log4j.*</package-name>
            <package-name>org.slf4j.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
</weblogic-web-app>
  • 若为EJB模块,在META-INF/weblogic-ejb-jar.xml中添加相同的prefer-application-packages配置

3. 完善Log4j2依赖配置

若应用使用SLF4J作为日志门面,需添加Log4j2与SLF4J的桥接依赖,确保日志能正确路由到Log4j2:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.20.0</version>
</dependency>

同时保持原有的log4j-api和log4j-core依赖,无需修改scope(WebLogic 14c默认不自带完整的Log4j2组件)

4. 验证Log4j2配置文件加载

  • 确保log4j2.xml位于src/main/resources目录下,打包后需在应用的WEB-INF/classes(Web应用)或META-INF/classes(EJB模块)中存在
  • 修改log4j2.xml的status为debug,查看WebLogic启动日志中是否有Log4j2的初始化信息,确认配置文件被正确读取:
<Configuration status="debug">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

5. 排查日志触发逻辑

在EJB中添加初始化日志,验证日志组件是否正常工作,排除业务方法未被调用的情况:

@Stateless
@GetTypeQualifierV2
public class GetTypeUserEvent implements EventTypeUserHandler {
    private static final Logger LOGGER = LogManager.getLogger(GetTypeUserEvent.class);

    @PostConstruct
    public void init() {
        LOGGER.info("GetTypeUserEvent 初始化完成");
    }

    @Override
    public void handle(Object event) {
        LOGGER.info("GetTypeUserEvent.handle() called with event: {}", event);
    }
}

启动服务器后,若能看到初始化日志,说明Log4j2配置正常,问题出在handle方法的触发逻辑上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:27:06