首页 > 代码库 > SSH整合log4j

SSH整合log4j

Struts,Spring和Hibernate均支持Log4j作为其日志实现系统,因此如果能够合理地配置Log4j,便可以为SSH架构建立起完善的日志系统。

SSH框架中使用log4j的好处:

1. 动态的改变记录级别和策略,即修改log4j.properties,不需要重启Web应用,这需要在web.xml中设置一下。
2. 把log文件定在/WEB-INF/logs/ 而不需要绝对路径。
3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path。

步骤:

1.导入所需的jar包。

2.创建"*.propertites"文件

3.在web.xml中添加配置,代码如下:

 1 <context-param> 2     <param-name>log4jConfigLocation</param-name> 3     <param-value>WEB-INF/log4j.properties</param-value> 4 </context-param> 5 <!-- 设置容器每60秒扫描log4j的配置文件 --> 6 <context-param> 7     <param-name>log4jRefreshInterval</param-name> 8     <param-value>60000</param-value> 9 </context-param>10 <!-- 设置webAppRootKey参数,来导出可以在log4j.properties配置文件中使用的代表Web应用根目录的占位符 -->11 <context-param>  12   <param-name>webAppRootKey</param-name>  13   <param-value>webApp.root</param-value>  14 </context-param>15 <!-- 需要添加spring-web.jar包,否则用发生错误信息-->16 <listener>17     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>18 </listener>
View Code

注意:

1.log4j的配置文件如果放在src目录下且起名为“log4j.propertites”,那么在tomcat启动时就会被读取。原因是tomcat默认的日志系统也是log4j,在启动的时候会默认去找src下的log4j.propertites。

2.spring把web目录的路径压入到了webapp.root的系统变量(在web.xml设置),${webapp.root}表示工程目录,可以把它加入到输入路径的前面。如:log4j.appender.appender_demo.File = ${webapp.root}/WEB-INF/log/abc.log

3.Spring监听器加载放在了Spring日志监听器的前面, 导致Spring加载时(这个时候会使用log),但是这个时候spring log监听还没有被加载。所以应把Spring日志监听器放在Spring监听器之前。

基本log4j的Demo:

 1 # For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!   2 # For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.   3 log4j.rootLogger=INFO, stdout, logfile   4 log4j.appender.stdout=org.apache.log4j.ConsoleAppender   5 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout   6 log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n   7 log4j.appender.logfile=org.apache.log4j.RollingFileAppender   8 log4j.appender.logfile.File=${webApp.root}/WEB-INF/SSHIntegration.log   9 log4j.appender.logfile.MaxFileSize=512KB  10 # Keep three backup files.  11 log4j.appender.logfile.MaxBackupIndex=3  12 # Pattern to output: date priority [category] - message  13 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout  14 log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n  15 ...  
View Code

 

SSH整合log4j