commons-logging与log4j学习总结

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” );
//用于指定日志文件配置信息的路径,若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”输出日志信息换行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值