配置讲解
log4j是操作日志打印工具。
日志级别
日志主要有几个级别,从低到高依次是DEBUG < INFO<WARN < ERROR < FATAL < OFF,低级别会打印高级别的日志。
日志输出格式
1.%m : 日志内容
2.%d : 日期格式
3.%p : 日志级别
4.%c : java类名
5.%l : 代码源码行数
如:[%d{HH\:mm\:ss\:SSS}][%p] (%c\:%L) - %m%n
输出格式:[08:58:59:412][INFO] (com.soon.action:35)
日志输出文件
DailyRollingFileAppender:将每天的日志作为一个日志文件保存
RollingLogFileAppender:通过配置可以实现日志文件大小大于配置的最大值便新建日志文件存储
常见配置讲解
log4j.appender.D.File =E://logs/log.log ### 日志文件地址,当天的文件名是"log.log",以前的日志文件名是"log.log.2017-05-31"###
log4j.appender.D.Append = true ### 为true是日志追加,false是覆盖日志 ###
log4j.appender.D.Threshold = DEBUG ### 日志输出级别 ###
log4j.appender.D.layout =org.apache.log4j.PatternLayout ###输出格式的类 ###
log4j.appender.D.layout.ConversionPattern =%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [%p ] %m%n ### 日志输出格式 ###
整个文件
### 设置###
log4j.rootLogger = debug,stdout,D,E
log4j.logger.org.mybatis.example=DEBUG
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= [%-5p]%d{yyyy-MM-dd HH:mm:ss,SSS}method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern= %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-ddHH:mm:ss} [ %t:%r] - [ %p ] %m%n
使用
在项目中,通过以下代码输出日志。
private staticLogger logger= Logger.getLogger(LogTest.class);
logger.error("错误信息");
logger.info("info");
配置
在web项目中,spring会自动扫描项目包目录下是否存在log4j.properties文件。
如果想自定义log4j的文件名和路径,需要在web.xml中配置log4j的文件路径
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
输出mybatis SQL配置
让log4j打印mybatis的sql语句需要需要把打印等级改为debug
当log4j为debug,它会打印所有框架级别为debug的日志,这无疑是十分巨大而且悲剧的,如果只想打印mybatis的sql,不想打印spring、dubbo等框架的日志,可以做如下配置
### logger在rootlogger之前 ###
log4j.logger.com.lc.dao=debug,stdout,D
log4j.rootLogger = error,stdout,D,E
这里com.lc.dao就是mapper接口的包,这个配置意思是,对于dao包,打印日志是debug级别,对于全局,打印日志是error级别。
它的打印就只有