一、 简单实例
穿件配置文件
1.log4j.properties
#使用appender定义根记录器 X,Y
log4j.rootLogger=ERROR,X,Y
#mybatis显示SQL语句日志配置
log4j.logger.org.mybatis=DEBUG
#com.hp.dao为mapper文件所在位置
log4j.logger.com.hp.dao=DEBUG
#打印日志到控制台
log4j.appender.Y=org.apache.log4j.ConsoleAppender
log4j.appender.Y.Target=System.out
#打印布局
log4j.appender.Y.layout=org.apache.log4j.PatternLayout
log4j.appender.Y.layout.ConversionPattern=%p [%d] %l %m%n
# 打印日志到文件
#普通
#log4j.appender.X=org.apache.log4j.FileAppender
#可设置文件最大值和文件数量,当文件超过最大文件数量,将会删除第一个,以此类推
#log4j.appender.X=org.apache.log4j.RollingFileAppender
#通过时间创建文件
log4j.appender.X=org.apache.log4j.DailyRollingFileAppender
#设置日志文件名称,及位置
log4j.appender.X.File=C:/Users/XR/Desktop/log/log.out
# 设置为true这文件不会被覆盖
log4j.appender.X.Append=true
# 文件生成频率:每天一个
log4j.appender.X.DatePattern='.' yyyy-MM-dd
#打印布局
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.conversionPattern=%p [%d] %l %m%n
上边配置的结果为:分别在控
2.maven用到的包
<!--解决Spring使用slf4j输出日志与log4j冲突的问题-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
<!-- log4j的包 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
3.web.xml添加
<!-- 加载log4j配置文件 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:properties/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
二、扩展
1、在程序中打印自定义日志
1)首先获取log对象
获取没有类名的对象 static Logger log = Logger.getRootLogger()
获取有类名对象 static Logger log = Logger.getLogger(UserAction.class.getName());
2)打印
log.error("日志信息!");//error为日志级别,可选
2、日志级别
按等级: ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
ALL:所有级别,包括自定义级别
DEBUG : 明细,程序运行的每一步
INFO : 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息
WARN : 指定具有潜在危害的情况
ERROR : 错误事件可能仍然允许应用程序继续运行
FATAL : 指定非常严重的错误事件,这可能导致应用程序中止
OFF : 这是最高等级,为了关闭日志记录
3、布局
log4j.properties代码为: 日期 包.类 类 包.类.方法(类:行号)
log4j.appender.X.layout.conversionPattern=%d 1.%c 2.%C 3.%F 4.%l
行号 级别 线程名称 方法 日志内容 换行
5.%L 6.%p 7.%r 8.%t 9.%x 10.%X 11.%M 12.%m 13.%n
打印内容为:
2019-01-25 11:30:10,8091.com.hp.action.UserAction 2.com.hp.action.UserAction 3.UserAction.java 4.com.hp.action.UserAction.getListAll(UserAction.java:26) 5.26 6.DEBUG 7.59595 8.http-8080-1 9. 10.{} 11.getListAll 12.这是一个debug级别的日志! 13.
控制字符数量:
%20m 不足二十字符时在左侧填充空格
%-20m 不足二十字符时在右侧填充空格
%20.30 不足二十个字符时,在左侧填充空格,超过三十个字符截取成三十个字符(保留右侧)
%20.30 不足二十个字符时,在右侧填充空格,超过三十个字符截取成三十个字符(保留右侧)
4、日志的打印方式
1.log4j.appender.X=org.apache.log4j.ConsoleAppender//日志记录到控制台
2.log4j.appender.X=org.apache.log4j.FileAppender //日志记录到文件
3.log4j.appender.X=org.apache.log4j.RollingFileAppender //可设置文件最大值,和备份文件数量
4.log4j.appender.X=org.apache.log4j.DailyRollingFileAppender //根据时间创建文件
5log4j.appender.X =org.apache.log4j.jdbc.JDBCAppender//日志记录到数据库
5、控制不同包打印日志不同级别
6、定义后从新定义级别
og4j.appender.Y.threshold=ERROR
注意:这里的级别,一定要高于初始定义的级别,不然无效