log4j 使用笔记整理中

Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。

日志信息的常用的优先级从高到低有ERROR、WARN、
INFO、DEBUG,分别用来指定这条日志信息的重要程度;

日志信息的输出目的地指定了日志将打印到控制台还是文件中;

而输出格式则控制了日志信息的显 示内容。

一、定义配置文件


  其实您也可以完全不使用配置文件,而是在代码中配置Log4j环境。但是,使用配置文件将使您的应用程序更加灵活。Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。下面我们介绍使用Java特性文件做为配置文件的方法:

  1.配置根Logger,其语法为:


  log4j.rootLogger = [ level ] , appenderName, appenderName, …

  其中,level
是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优
先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定
义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
appenderName就是指B日志信息输出到哪个地方。您可以同时指定多个输出目的地。

ERROR>WARN>INFO>DEBUG

#debug:显示debug、info、warn、error

#info:显示info、warn、error

#warn:显示warn、error

#error:显示error

#输出到控制台
 
log4j.appender.appender1=org.apache.log4j.ConsoleAppender

log4j.rootLogger=info,appender1

2.配置日志信息输出目的地Appender,(可以发送给邮件、数据库等)其语法为:

  log4j.appender.appenderName = fully.qualified.name.of.appender.class

  log4j.appender.appenderName.option1 = value1
  …

  log4j.appender.appenderName.option = valueN

  其中,Log4j提供的appender有以下几种:
  org.apache.log4j.ConsoleAppender(控制台),

  org.apache.log4j.FileAppender(文件),

  org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),

  org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  3.配置日志信息的格式(布局),其语法为:


  log4j.appender.appenderName.layout =
fully.qualified.name.of.layout.class

  log4j.appender.appenderName.layout.option1 = value1
  …

  log4j.appender.appenderName.layout.option = valueN

  其中,Log4j提供的layout有以e几种:
  org.apache.log4j.HTMLLayout(以HTML表格形式布局),

  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

  Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息

  %p
输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
  %r 输出自应用启动到输出该log信息耗费的毫秒数
  %c
输出所属的类目,通常就是所在类的全名
  %t 输出产生该日志事件的线程名
  %n
输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
  %d
输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd
HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
  %l
输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

二、在代码中使用Log4j

  1.得到记录器

  使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:

  public static Logger
getLogger( String name)

  通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如:

  static Logger
logger = Logger.getLogger ( ServerWithLog4j.class.getName () )

  2.读取配置文件

  当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:

  BasicConfigurator.configure ():
自动快速地使用缺省Log4j环境。
  PropertyConfigurator.configure ( String configFilename)
:读取使用Java的特性文件编写的配置文件。
  DOMConfigurator.configure ( String filename )
:读取XML形式的配置文件。

  3.插入记录信息(格式化日志信息)


  当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:

  Logger.debug ( Object message ) ;
  Logger.info ( Object message ) ;

  Logger.warn ( Object message ) ;
  Logger.error ( Object message )
;


#设置级别和多个目的地
log4j.rootLogger=debug,appender1,appender2

#输出到控制台
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#设置输出样式
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

#输出到文件(这里默认为追加方式)
log4j.appender.appender2=org.apache.log4j.FileAppender
#设置文件输出路径
#【1】文本文件
#log4j.appender.appender2.File=c:/Log4JDemo02.log
log4j.appender.appender2.MaxFileSize=512KB
log4j.appender.appender2.MaxBackupIndex=5
#【2】HTML文件
log4j.appender.appender2.File=c:/Log4JDemo02.html
#设置文件输出样式
#log4j.appender.appender2.layout=org.apache.log4j.TTCCLayout
log4j.appender.appender2.layout=org.apache.log4j.HTMLLayout

4、Threshold的语法

log4j.threshold=level

level就是前面所说的 OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG
,ALL。Threshold是个全局的过滤器,它将把低于所设置的level的信息过滤不显示出来。
看一个例子:

log4j.rootLogger=DEBUG,
CON
log4j.appender.CON=org.apache.log4j.ConsoleAppender
log4j.appender.CON.layout=org.apache.log4j.PatternLayout
log4j.appender.CON.layout.ConversionPattern=[%t]
%-5p %c - %m%n
#Only print log statement of level WARN or above regardless of
the(只打印warn级别以上的信息)
#logger.
log4j.threshold=WARN

Threshold的用法很灵活,还可以在appender中增加threshold

log4j.rootLogger=DEBUG,
C
log4j.appender.C=org.apache.log4j.ConsoleAppender
# Set the appender
threshold to
INFO
log4j.appender.C.Threshold=INFO
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%-4r
[%t] %-5p %c %x - %m%n

这里初始设置 level为DEBUG ,但log4j.appender.C.Threshold=INFO 设置为INFO。因为 INFO>DEBUG
所以如果含有DEBUG级别的信息,将被过滤。

5.
additivity

log4j.rootLogger=INFO,
stdout,logfile 

log4j.logger.com.ambow.upgrade=INFO, dataSync

则com.ambow.upgrade包及其子包下的Logger不光在dataSync里输出,也会在rootLogger的INFO、stuout和logfile中输出; 
若想让com.ambow.upgrade包及其子包下的Logger只在Appender
dataSync中输出,则在log4j.properties中添加下行即可: 

log4j.additivity.com.ambow.upgrade=false(默认是TRUE),这就是同一个日志在多个输出源输出的原因

6.

log4j.logger(后面接具体路径的类名或者自定义的名字)自定义日志记录器

log4j.logger.com.xx.xx(xx是类名)=
DEBUG, test

配置:log4j.logger.com.alipay.Test=
DEBUG, test

log4j.appender.test=org.apache.log4j.FileAppender
log4j.appender.test.File=${myweb.root}/WEB-INF/log/test.log
log4j.appender.test.layout=org.apache.log4j.PatternLayout
log4j.appender.test.layout.ConversionPattern=%d
%p [%c] - %m%n

调用:private static Log logger =
LogFactory.getLog(Test.class);
test这个类自动就使用了单独的日志记录器

配置:log4j.logger.myTest1= DEBUG,
test1

log4j.appender.test1=org.apache.log4j.FileAppender
log4j.appender.test1.File=${myweb.root}/WEB-INF/log/test1.log
log4j.appender.test1.layout=org.apache.log4j.PatternLayout
log4j.appender.test1.layout.ConversionPattern=%d
%p [%c] - %m%n

调用:private static Log logger1 =
LogFactory.getLog("myTest1"); 单独的日志记录器

http://www.iteye.com/topic/378077

http://www.blogjava.net/zhb8015/articles/382624.html

log4j 使用笔记整理中,布布扣,bubuko.com

时间: 2024-12-24 07:06:22

log4j 使用笔记整理中的相关文章

[C#] C# 6.0 的知识梳理(整理中)

C# 6.0 的知识梳理 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 虽说出了一段时间,但是似乎有许多园友对这一块知识并不了解,如拼接字符串的 $ 符号,在此,小人献上拙作一篇<C# 6.0 的知识梳理>,祝大家在新的一年里:年年有今日,岁岁有今朝,月月涨工资,周周中彩票,天天好心情,日日好运道,白天遇财神,夜晚数钞票. 好了,废话不多说,我们先来回顾一下 C# 的版本史.后续我会对带 0 的版本号进

Log4j自学笔记

log4j十一个开源的日志记录组件,在工程中用于代替System.out语句.它允许开发人员以任意的精细程度控制哪些日志说明被输出,通过使用外部的配置文件,可以在运行的时候配置它.Log4jPO有三个主要的组件:Loggers(记录器).Appenders(输出源).Layout(布局),可以简单的理解为日志类别,日志要输的地方.输出的格式. Loggers组件在此系统中被分为五个级别:DEBUG<INFO<WARN<ERROR<FATAL.这五个级别是有顺序的.DEBUG Log

JS常用方法【私房菜-笔记】-持续整理中

//记录一下前端开发中 JS常用的方法等,持续收集整理中 ---------------------------------------------------------- 1 //处理键盘事件 禁止后退键(Backspace)密码或单行.多行文本框除外 2 function banBackSpace(e) { 3 var ev = e || window.event;//获取event对象 4 var obj = ev.target || ev.srcElement;//获取事件源 5 va

Log4j使用笔记

在工作过程中,常常需要查看后台日志,为了更好的记录日志,我们使用Log4j来记录日志. 一.maven依赖的配置 在maven中央库库里找到log4j的java包,添加到依赖即可. <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> 二.配置pro

Log4j学习笔记

log4j是一个用Java编写的可靠,快速和灵活的日志框架(API),它在Apache软件许可下发布. Log4j是高度可配置的,并可通过在运行时的外部文件配置.它根据记录的优先级别,并提供机制,以指示记录信息到许多的目的地,诸如:数据库,文件,控制台,UNIX系统日志等. Log4j中有三个主要组成部分: loggers: 负责捕获记录信息. appenders : 负责发布日志信息,以不同的首选目的地. layouts: 负责格式化不同风格的日志信息.

基于Java的开源日志库log4j调研笔记

由于Hadoop生态链基本都是java开发的,所以在很多有关大数据处理的开源项目中,经常会看到log4j这个jar包. 本文旨在对它的用法做基本说明. 1. log4j是什么 从log4j的命名(log for java)不难看出,它是为java提供的日志库.具体而言,它是Apache基金会下的开源项目,它可在不修改应用程序代码的前提下,在程序运行时提供灵活的日志打印功能(当然,应用程序还是必须在代码中调用log4j进行打印,但程序发布后,可以通过配置文件控制日志输出目的地及允许输出的日志等级)

zedboard各种相关资料整理中

目录 知识篇.. 1 Zedboard实现Linux. 1 中断.. 1 裸机中断实验硬件配置.. 2 oled驱动.. 2 约束.. 2 [Vivado使用误区与进阶]XDC约束技巧-- I/O篇.. 2 教程篇.. 2 何宾网络课堂.. 2 高亚军-vivado入门与提高.. 2 资源篇.. 2 Xilinx官网用户指南地址.. 2 相关博客.. 3 转自其他博客.. 3 知识篇 Zedboard实现Linux http://blog.chinaunix.net/xmlrpc.php?r=b

金融知识学习(整理中)

[直物取引(じきものとりひき)].[直物取引].[スポット取引]直物為替取引(直物為替)は.「直物取引」や「スポット取引」とも呼ばれ.原則として.通貨を売買することを契約した日(約定日)から2営業日後に受け渡しをする外国為替取引をいう.受渡日が2営業日後(約定日の翌々営業日)とされているのは.外国為替取引は国境を越えて取引が行われることから.各国に時差があることも考慮して事務処理上の余裕を持たすためである.この取引の例外として.約定日の当日または約定日の翌営業日に受け渡しされることもある.[先物

swift 中String,Int 等类型使用注意,整理中

swfit中的String和Int是 struct定义的,不同于NSString和NSNumber, 如果想在一个数组中同时包含String和Int,那么这个数组要声明为[Any] 而不是 [AnyObject] , 因为他们不是class! 另外,与c中的string和int 不同,swfit中的是struct,虽然在使用上,可以把Int当做int使用,它代表了基本的整型,可以达到c中的int的功能,但是数据结构上是不同的,具体来说,