实际开发使用的日志框架很多,log4j可能有些过时了,这里需要简单的记录,方便偶的朋友和学生,做设计的时候能方便查看
1.在web.xml配置log4j.的监听器
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>应用名.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<!-- 6秒 -->
<param-value>6000</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<!--这里配置了一个listener,也可以配置servlet:-->
<!--
<servlet>
<servlet-name>log4j</servlet-name>
<servlet-class>org.springframework.web.util.Log4jConfigServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
-->
这相当于按spring的规范,将log4j进行初始化,无非是指定一下配置文件位置。
应用名.root 相当于添加一个系统变量,主要是为了指定应用的路径。
补充说明:
说明: 在上文的配置里,在上文的配置里,Log4jConfigListener会去类路径下log4j.propeties 读取配置文件;开一条watchdog线程每60秒扫描一下配置文件的变化(这样在web服务启动后再去修改配置文件也不用重新启动web服务了);并把 web目录的路径压入一个叫webapp.root的系统变量(webapp.root将在log4j.properties文件中使用)。
然后,在log4j.properties 里就可以这样定义logfile位置
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log
如果有多个web应用,怕webapp.root变量重复,可以在context-param里定义webAppRootKey。
2.log4j.properties文件
随便弄了一个 简单看一下而已
# debug<info<warn<error
log4j.rootLogger=debug, LOGFILE
#log4j.debug=true
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
#设置包日志输出级别
#log4j.logger.com.xy6=INFO, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
#输出到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %p [%c] - <%m>%n
#输出到文件
log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE.File=${应用名.root}/log/AllLog.log
log4j.appender.LOGFILE.MaxFileSize=10000KB
log4j.appender.LOGFILE.MaxBackupIndex=1000
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#mybatis显示SQL语句日志配置
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
3.如何调用
import org.apache.log4j.Logger;
private static Logger log = Logger.getLogger(SessionListener.class);
log.info("SessionListener contextInitialized!");