1.现在项目中加载日志的jar包,如果把配置文件放到src目录下,则不用配置,否则需要的web.xml文件中配置log4j的文件路径
2.日志如何把不同级别日志输出到不同的文件夹,并且每日生成一个日志
因为org.apache.log4j.DailyRollingFileAppender是输出当前级别及以上的日志,所以如果要只输出当前级别日志,需要对此方法重写,如下:
public class MyAppender extends DailyRollingFileAppender {
public boolean isAsSevereAsThreshold(Priority priority) {
//只判断是否相等,而不判断优先级
return this.getThreshold().equals(priority);
}
}
log4j.properties配置文件如下
log4j.rootLogger=INFO,console,info,warn,error
#\u63a7\u5236\u53f0
#FATAL>ERROR>WARN>INFO>DEBUG
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.ImmdiateFlush=true
log4j.appender.console.Target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p][%l(%r)]: %m %x %n
log4j.logger.info=info
log4j.appender.info=jtweixin.common.MyAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%l] - [ %t\:%r ] - [ %p ] %m%n
log4j.appender.info.datePattern=yyyy-MM-dd'.txt'
log4j.appender.info.Threshold = INFO
log4j.appender.info.append=false
log4j.appender.info.File=D\:/logs/info/log_
log4j.logger.warn=warn
log4j.appender.warn=jtweixin.common.MyAppender
log4j.appender.warn.layout=org.apache.log4j.PatternLayout
log4j.appender.warn.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%l] - [ %t\:%r ] - [ %p ] %m%n
log4j.appender.warn.datePattern=yyyy-MM-dd'.txt'
log4j.appender.warn.Threshold = WARN
log4j.appender.warn.append=false
log4j.appender.warn.File=D\:/logs/warn/log_
log4j.logger.error=error
log4j.appender.error=jtweixin.common.MyAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%l] - [ %t:%r ] - [ %p ] %m%n
log4j.appender.error.datePattern=yyyy-MM-dd'.txt'
log4j.appender.error.Threshold = ERROR
log4j.appender.error.append=false
log4j.appender.error.File=D\:/logs/error/log_
#如果需要输出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
#log4j.logger.java.sql.ResultSet=DEBUG
#如果不想输出spring自身的日志,需要做一下配置
log4j.logger.org.springframework=ERROR
3.如果想把某个类的日志单独输出到某个文件夹:
1)首先在类中做如下配置:
private static Logger log = Logger.getLogger(“loginInterceptor”);
2)配置文件如下:
log4j.rootLogger=INFO,console,dailyfile
#\u63a7\u5236\u53f0
#FATAL>ERROR>WARN>INFO>DEBUG
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.ImmdiateFlush=true
log4j.appender.console.Target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p][%l(%r)]: %m %x %n
log4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.File = D:/logs/log_
log4j.appender.dailyfile.DatePattern=yyyy-MM-dd'.txt'
log4j.appender.dailyfile.Append = true
log4j.appender.dailyfile.Threshold = INFO
log4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout
log4j.appender.dailyfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}[%c] - [ %p ] %m%n
##URL intercept log
#这个地方logger.的名字必须和java文件中定义的Logger.getLogger里的名字一样才行
log4j.logger.loginInterceptor=INFO,intercept
log4j.appender.intercept=org.apache.log4j.DailyRollingFileAppender
log4j.appender.intercept.File = D:/logs/url/log_
log4j.appender.intercept.DatePattern=yyyy-MM-dd'.txt'
log4j.appender.intercept.layout=org.apache.log4j.PatternLayout
log4j.appender.intercept.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}[%c] - [ %p ] %m%n
#false的话,这个类的日志只输出到指定文件,不再输出到其他地方
log4j.additivity.loginInterceptor=false
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
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.org.springframework=ERROR