搞了幾乎一天。因爲項目用到了spring5,配置Log4J的時候發現spring5少了Log4jConfigListener這個監聽器,導致在web.xml裏面不能啓動log4j,官方建議用log4j2。用的是servlet2.5,所以就需要在web.xml中配置監聽器。如果是servlet3的話,直接導入log4J2的jar包就行了,不需要再在web.xml中配置了,因爲會自動啓動的。
log4J2需要的jar包有3個:log4j-core 、 log4j-api、log4j-web。具體的去http://logging.apache.org/log4j/2.0/download.html這個網址下載吧。
再提醒一次,如果項目是servlet3以上,只需要把這3個jar包導入項目,再弄個配置文件放到項目代碼根目錄就行了。如果你的項目是servlet2.5還需要配置web.xml,配置如下:
<!-- log4j2配置 -->
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:resource/log4j2.xml</param-value>
</context-param>
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener
</listener-class>
</listener>
<filter>
<filter-name>log4jServletFilter</filter-name>
<filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log4jServletFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
<dispatcher>ASYNC</dispatcher>
</filter-mapping>
在controller中使用如下:
Logger logger = LogManager.getLogger(UserController.class.getName());
導入的包是下面這兩個路徑。
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
具體的文檔,在官方文檔有詳細介紹。多閱讀官方文檔。http://logging.apache.org/log4j/2.0/manual/webapp.html
配置文件log4j2.xml:(下面這個是在官網上找出來的,可以使用)
<Configuration status="WARN" name="ServletTest">
<Appenders>
<Servlet name="Servlet">
<PatternLayout pattern="%m%n%ex{none}"/>
</Servlet>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Servlet"/>
</Root>
</Loggers>
</Configuration>