问题现象

使用 EDAS 后,Log4j 日志无法输出。

可能原因

Log4j 日志被覆盖会导致日志无法输出。

解决方案

  1. Log4j 不要使用默认名称,会被自动屏蔽,将配置文件改为其他名称,例如放在 WEB-INF/log4j-myAppName.xml
  2. 配置 Spring 的 Log4jListener,在 web.xml 中增加如下配置。
     <listener>
         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
     </listener>
     <context-param>
         <param-name>log4jConfigLocation</param-name>
         <param-value>WEB-INF/log4j-myAppName.xml</param-value>
     </context-param>
    							

    myAppName 是应用自定义的名字,可以根据情况进行定义。

  3. 启动应用,Pandora 会首先加载内置的 Log4j.jar,同时加载 Pandora 内部配置的 Log4j 配置文件,此时不会加载业务应用的配置。
  4. Pandora 加载完成后,在应用的 web.xml 加载时会执行 Log4jConfigListener 加载业务自定义的 Log4j 配置,保证业务的 Log4j 配置生效。