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>
注意:
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 ...
时间: 2024-11-05 14:47:23