您的位置:首页 > 其它

commons-logging与log4j学习总结

2016-09-12 20:02 267 查看
commons-logging和log4j 两个日志组件

一、简介

作用: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”输出日志信息换行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: