问题现象

使用SAE后,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配置生效。