commons-logging与log4j学习总结
2016-09-12 20:02
267 查看
commons-logging和log4j 两个日志组件
一、简介
作用:commons-logging和log4j 是用来记录日志文件的一套api,apache基金会开发的。log4j是专门处理日志文件的。不需要commons-logging,log4j也可以运行。
日志组件一般用于listenner钟,用于检测记录程序运行时变量变化或者错误的发生
二、下载
下载:百度中直接输入“log4j下载”可被指引到官网去下载。当前版本是1.2
log4j: http://logging.apache.org/log4j/1.2/download.html
commons-logging http://commons.apache.org/proper/commons-logging/
三、引入
在项目中添加外部jar包,把log4j引入到项目中来。
复制到web-inf/lib目录下,然后再eclipse中刷新一下文件夹。
1.配置文件(可以有两种之一,.properties文件,.xml文件)
//级别向右增高,级别低的日志信息包含级别高的日志信息
A1,R,信息输出的目的地。
//第一个逗号前指定了日志的级别,第二个逗号以后说明了输出的目的地
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Threshold=debug
//threshold表明输出到这个appender类型的日志信息的级别
log4j.appender.A1.target=System.out
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%c -%m%n
log4j.xml,放到lib目录下,有格式约束,不容易出错,但是看起来复杂一些。
2.导入包
import org.apache.log4j.*;
import org.apache.commons.logging. * ;
3.获取日志对象
直接用log4j的时候,代码这样编写
public static Logger logger=LogManager.getLogger(LogListener.class);
或者
public static Logger logger=LogManager.getLogger(“javastudy.LogListener”);
或者
public static Logger logger=LogManager.getLogger(LogListener.class.getName());
LogManager也可以换成Logger
PropertyConfigurator.configure( “log4j.properties” )
4000
;
//用于指定日志文件配置信息的路径,若log4j文件是放在src目录下,此代码可省略
用到commons-logging的时候,代码这么编写
//private static Log logger = LogFactory.getLog(YouClassName. class )
4.日志级别(根据问题的严重程度)
DEBUG、INFO、WARN、ERROR、FATAL
logger.error(“Did it again!”);
logger.info(“我是info信息”);
logger.debug(“我是debug信息”);
logger.warn(“我是warn信息”);
logger.fatal(“我是fatal信息”);
logger.log(Level.DEBUG, “我是debug信息”);
logger.debug(“添加了一个application属性,属性名为:”+arg0.getName());
logger.log(level.ERROR,”此行代码是log4j中才有的方法”);
rootLogger的第一个数值是用来定义输出的级别OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,A1和R都是日志的输出,这个可以有多个。appender类型可以有下面几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
不同的appender选项也不同
(1).ConsoleAppender选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
(2).FileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
(3).DailyRollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DatePattern=’.’yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
1)’.’yyyy-MM: 每月
2)’.’yyyy-ww: 每周
3)’.’yyyy-MM-dd: 每天
4)’.’yyyy-MM-dd-a: 每天两次
5)’.’yyyy-MM-dd-HH: 每小时
6)’.’yyyy-MM-dd-HH-mm: 每分钟
(4).RollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
文件的layout布局也有几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
使用最多的就是PatternLayout
输出格式log4j.appender.A1.layout.ConversionPattern这个参数比较多
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个”%”字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为”\r\n”,Unix平台为”\n”输出日志信息换行
一、简介
作用:commons-logging和log4j 是用来记录日志文件的一套api,apache基金会开发的。log4j是专门处理日志文件的。不需要commons-logging,log4j也可以运行。
日志组件一般用于listenner钟,用于检测记录程序运行时变量变化或者错误的发生
commons-logging用来管理log4j,commons-logging也可以配合别的日志系统一起使用。 commons-logging没有log4j也可以单独实现日志,但是功能比较简单。 它自身的日志功能平常弱(只有一个简单的SimpleLog?),所以一般不会单独使用它 一般来说,我们是两者配使用的。 提供一个统一的日志接口,简单了操作,同时避免项目与某个日志实现系统紧密耦合。总的来说commons-logging当了与开发人员的接口,也当了管理log4j的管理员
二、下载
下载:百度中直接输入“log4j下载”可被指引到官网去下载。当前版本是1.2
log4j: http://logging.apache.org/log4j/1.2/download.html
commons-logging http://commons.apache.org/proper/commons-logging/
三、引入
在项目中添加外部jar包,把log4j引入到项目中来。
复制到web-inf/lib目录下,然后再eclipse中刷新一下文件夹。
1.配置文件(可以有两种之一,.properties文件,.xml文件)
log4j.properties,放到src目录下,没有格式,容易出错,但是看起来简单一些 DEBUG、INFO、WARN、ERROR、FATAL 日志级别
//级别向右增高,级别低的日志信息包含级别高的日志信息
A1,R,信息输出的目的地。
log4j.rootLogger=info,A1,R
//第一个逗号前指定了日志的级别,第二个逗号以后说明了输出的目的地
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Threshold=debug
//threshold表明输出到这个appender类型的日志信息的级别
log4j.appender.A1.target=System.out
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%c -%m%n
log4j.appender.R=org.apache.log4j.FileAppender log4j.appender.R.Threshold=error log4j.appender.R.ImmediateFlush=true log4j.appender.R.File=e:\\HelloLog4j.log //e盘下的HelloLog4j.log文件(输出到) log4j.appender.R.Append=true log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d -%m%n //这里记录到输出日志文件的内容有:日期-要输出的(自己在程序写的输//出信息)还有个换行
log4j.xml,放到lib目录下,有格式约束,不容易出错,但是看起来复杂一些。
2.导入包
import org.apache.log4j.*;
import org.apache.commons.logging. * ;
3.获取日志对象
直接用log4j的时候,代码这样编写
public static Logger logger=LogManager.getLogger(LogListener.class);
或者
public static Logger logger=LogManager.getLogger(“javastudy.LogListener”);
或者
public static Logger logger=LogManager.getLogger(LogListener.class.getName());
LogManager也可以换成Logger
PropertyConfigurator.configure( “log4j.properties” )
4000
;
//用于指定日志文件配置信息的路径,若log4j文件是放在src目录下,此代码可省略
用到commons-logging的时候,代码这么编写
//private static Log logger = LogFactory.getLog(YouClassName. class )
4.日志级别(根据问题的严重程度)
DEBUG、INFO、WARN、ERROR、FATAL
logger.error(“Did it again!”);
logger.info(“我是info信息”);
logger.debug(“我是debug信息”);
logger.warn(“我是warn信息”);
logger.fatal(“我是fatal信息”);
logger.log(Level.DEBUG, “我是debug信息”);
logger.debug(“添加了一个application属性,属性名为:”+arg0.getName());
logger.log(level.ERROR,”此行代码是log4j中才有的方法”);
rootLogger的第一个数值是用来定义输出的级别OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,A1和R都是日志的输出,这个可以有多个。appender类型可以有下面几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
不同的appender选项也不同
(1).ConsoleAppender选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
(2).FileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
(3).DailyRollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DatePattern=’.’yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
1)’.’yyyy-MM: 每月
2)’.’yyyy-ww: 每周
3)’.’yyyy-MM-dd: 每天
4)’.’yyyy-MM-dd-a: 每天两次
5)’.’yyyy-MM-dd-HH: 每小时
6)’.’yyyy-MM-dd-HH-mm: 每分钟
(4).RollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
文件的layout布局也有几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
使用最多的就是PatternLayout
输出格式log4j.appender.A1.layout.ConversionPattern这个参数比较多
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个”%”字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为”\r\n”,Unix平台为”\n”输出日志信息换行
相关文章推荐
- [verilog读书笔记]6.数据流建模
- 数据结构实验之链表六:有序链表的建立
- 第三周项目1-顺序表的基本运算
- C++——算法基础之排序——堆排序
- POI做题记录:第二届POI
- event对象的属性
- JZOJ 4771. 爬山
- ADL:社交网络分析与数据挖掘(DAY2)
- codeforces 459E
- 2016 ICPC 大连网络赛 HDU 5877 Weak Pair
- Cookie和Session区别(2)
- ArrayDeque集合的妙用
- [verilog读书笔记]5.门级建模
- [bzoj3729]Gty的游戏
- 组原 之 数字
- JavaScript学习笔记之DOM对象操作html元素
- POJ 2065 SETI(高斯消元解同余方程组)
- LeetCode 383:Ransom Note
- 并查集
- 160809132 梁佳佳