项目中大部分都会用到log4j.properties,确实很好使。但每次打开的时候,看到的是一大堆无字天书,看不懂,现在得空研究了一下,做一下分享,这里面汲取了javaEye中其他博友的帮助,再次O(∩_∩)O谢谢了、
注意:红色部分都为重要信息。
1.输出级别:
ERROR、WARN、INFO、DEBUG、FATAL、OFF
ERROR:严重错误,主要是程序的错误
WARN:一般警告,比如:seesion丢失
INFO:一般要显示的信息,比如:登录
DEBUG:程序调试信息
log4j建议使用以上四种带注释的,即ERROR、WARN、INFO、DEBUG。
2.log4j的具体使用实例
log4j.rootCategory=INFO, CONSOLE, LOGFILE
#输出到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n
#每天生成一个日志文件
log4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.DatePattern='.'yyyy-MM-dd
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=WARN
log4j.appender.LOGFILE.File=logs/log
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
#在日志中显示sql语句
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=info
log4j.logger.javax.sql=info
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
首先:必须先在程序中导入两个jar包:commons-logging.jar,logging-log4j-1.2.9.jar.
$1
、定义输出目的地
log4j.rootLogger或者log4j.rootCategory=[level],A1,B2,C3...
两者区别:在早期log4j版本中,org.apache.Category实现了记录器的功能,所谓人往高处走水往低处流,log4j也做的要越来越好,它使用logger扩展了Category类,因此目前这两个可以通用的。(个人建议使用log4j.rootLogger)
$2
、输出目的地的类型 log4j.appender.A1=以下类
1、org.apache.log4j.ConsoleAppender 输出到控制台
2、org.apache.log4j.DailyRollingFileAppender 每天生成一个日志文件
3、org.apache.log4j.RollingFileAppender 文件达到制定的尺寸会产生一个新的文件
4、org.apache.log4j.FileAppender 输出到文件
5、org.apache.log4j.WriterAppender 把日志文件以流的形式发送到任意指定的地方\
(imp)每种布局格式的常用属性详解
$2-1(org.apache.log4j.ConsoleAppender)、
log4j.appender.A1=org.apache.log4j.ConsoleAppender
(1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等) 【指定消息的最低输出层次】
(2)log4j.appender.A1.ImmediateFlush=true|false 默认为true 【表所有的信息都会立即示输出】
(3)log4j.appender.A1.Target=System.err|System.out 默认为System.out 【指定输出到控制台】
$2-2(org.apache.log4j.DailyRollingFileAppender)、
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
(1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等) 【指定消息的最低输出层次】
(2)log4j.appender.A1.ImmediateFlush=true|false 默认为true 【表所有的信息都会立即示输出】
(3)log4j.appender.A1.File=a.log (a.log为文件名) 【把日志信息输出到a.log文件,默认是从web服务器的根路径开始】
(4)DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。也可以指定按月、周、天、时和分,
对应的格式如下:
1)'.'yyyy-MM: 每月
2)'.'yyyy-ww: 每周
3)'.'yyyy-MM-dd: 每天
4)'.'yyyy-MM-dd-a: 每天a次
5)'.'yyyy-MM-dd-HH: 每小时
6)'.'yyyy-MM-dd-HH-mm: 每分钟
$2-3(org.apache.log4j.RollingFileAppender)
log4j.appender.A1=org.apache.log4j.RollingFileAppender
(1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等) 【指定消息的最低输出层次】
(2)log4j.appender.A1.ImmediateFlush=true|false 默认为true 【表所有的信息都会立即示输出】
(3)log4j.appender.A1.File=a.log (a.log为文件名) 【把日志信息输出到a.log文件,默认是从web服务器的根路径开始】
(4)log4j.appender.A1.Append=true|false 默认为true 【true将消息增加到指定文件中,false指将消息覆盖指定的文件内容】
(5)log4j.appender.A1.MaxFileSize=100KB 后缀可以为MB,GB。日志文件达到该大小时,将会自动滚动,将原来内容移动到a.log.1文件、
(6)log4j.appender.A1.MaxBackupIndex=1|2|3.... 指可以产生的滚动文件的最大数
$2-4(org.apache.log4j.FileAppender)
log4j.appender.A1=org.apache.log4j.FileAppender
(1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等) 【指定消息的最低输出层次】
(2)log4j.appender.A1.ImmediateFlush=true|false 默认为true 【表所有的信息都会立即示输出】
(3)log4j.appender.A1.File=a.log (a.log为文件名) 【把日志信息输出到a.log文件,默认是从web服务器的根路径开始;貌似还可以在启动web服务的时候指定文件根目录,这个没有试用过
】
$3
、配置日志输出的格式 log4j.appender.A1.layout=以下类
1、org.apache.log4j.HTMLLayout 以html表格的形式布局
2、org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等信息
3、org.apache.log4j.PatternLayout 可以灵活指定布局格式(这个经常与log4j.appender.A1.layout.ConversionPattern=%-4r %d{yyyy MM dd HH:mm:ss} %m%n)
4、org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
使用灵活布局格式(PatternLayout),需要指定打印格式ConsersionPattern,具体参数如下:
%p 日志的优先级,即:DEBUG,WARN,INFO,ERROR,FAULT
%m 代码中指定的信息,产生的日志具体信息
%n 换行
%r 自应用启动到输出该log信息时耗费的毫秒数
%c 日志信息所属的类的全名
%d 输出日志的时间,默认为ISO8601 如:2010-04-07 15:19:21,640,也可以在后面指定格式,如:%d{yyyy-MM-dd HH:mm:ss,SSS}
%L 输出代码中的行号
%F 产生日志的代码名称
%t 产生日志信息的线程名
%l 日志事件的位置,相当于%c.%m(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数,举例:Testlog4.main(TestLog4.java:10)。
Ⅰ、
也可以在%和参数之间添加数字等,控制其最大、最小宽度以及对齐方式、
%-20c:输出日志信息所在类的全名,该全名的最小宽度为20,“-”表示左对齐,默认为右对齐。类的全名小于20,就右补空格。
%.20c:前面加个点,表示该类的全名的最大宽度为20,此时为右对齐,如果长度小于20,也不会左补空格;如果长度超过20,则截取左边超长的部分。写成(%-.20c效果一样),但是你不能写成%.-20c,控制台会原样输出,并且提示这样写有问题,但不影响程序运行、
%20.50c:表示最小宽度为20,最大宽度为50,如果长度超过50,截取左边超出部分.(测试发现与%-20.50c效果一样,很是郁闷....)
Ⅱ、
输出指定包或者指定类中的日志信息
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 输出com.ibatis.common.jdbc.SimpleDataSource类中的日志信息
log4j.logger.javax.sql=info 输出javax.sql包中的日志信息
log4j.com.test=warn 你也可以指定你的项目中的包
log4j.logger.org.springframework=DEBUG 输出spring的包里面的日志信息
Ⅲ、
在项目的类中使用,需要导入commons-logging.jar
然后private final static Log log = LogFactory.getLog(getClass()); 参数为当前类的class
在使用日志记录时,可以分等级的去记录,如:log.info("这是基本信息");log.error("这个错误信息");等等
------------------------------------------------------我是分割线----------------------------------------------------------------------------
log4j的相对路径配置:
1、需要在web.xml中添加一个监听器:
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
注意:这个监听器一定要放在前面,放在后面不起作用(具体不知道为什么)
2、需要把项目在tomcat中的路径注入到一个变量中
<!-- Log4j的配置(在同一容器中部署多个应用时,不能使用默认的webAppRootKey,必须指定唯一KEY,以免冲突) -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>XXX.root</param-value>
</context-param>
3、在log4j.properties中配置log4j.appender.R.File=${dxmppApi.root}/WEB-INF/xxx.log,你就可以tomcat的项目目录下找到xxx.log文件了。
再说一下,在项目中,如果log4j不是放在根目录下时候怎么加载它。在web.xml中添加如下代码:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/config/log4j.properties</param-value>
<!-- 也可以这样写<param-value>classpath:config/log4j.properties</param-value> -->
</context-param>
分享到:
相关推荐
log4j.properties配置详解
log4j.properties 的使用详解(含log4j.properties)
log4j.properties配置详解,长期总结,以完善
Log4j.properties配置详解,Log4j.properties配置详解,Log4j.properties配置详解,Log4j.properties配置详解Log4j.properties配置详解
log4j.properties配置详解 使用教程
作为Apache的开源项目,Log4j可以使我们很好的控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、 UNIX Syslog守护进程等;也可以方便的使我们控制每一条日志的输出格式;通过...
### set log levels ###log4j.rootLogger = debug , stdout , D , E### 输出到控制台 ###log4j.appender.stdout =org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target =System.outlog4j.appender.stdout....
log4j.properties参数详解,PDF文件,值得参考保存。对于每个参数的含义记不住,可以将此文档保存做开发参考文档
log4j.properties参数详解,PDF文件,值得参考保存。对于每个参数的含义记不住,可以将此文档保存做开发参考文档
在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用。Log4j支持两种配置文件格式,一种是XML格式的文件,一种是java properties(key=value)...
主要介绍了 log4j.properties配置与加载应用的相关资料,需要的朋友可以参考下
Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在...
log4j.properties 配置详解与实例
本篇文章主要介绍了详解log4j.properties的简单配置和使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
目录 ...................... 1. Log4j 简介 ........... 2. 下载与使用............ 2.1 下载 log4j 的 jar 文件 2.2 编写一个测试类 ...... ...4.4 在代码中使用 Log4j .. 4.5 注意事项 . 5. Properties 文件实例说明
log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn". 系统选择配置文件的优先级(从先到后)如下: (1).classpath下的名为log4j2-test.json...
log4j常用配置,properties 和.xml两种配置示例