您的当前位置:首页正文

Log4j总结文档

2023-09-24 来源:爱go旅游网
LOG4J 使用总结

目录

一、Log4j简介 ................................................................................................................................ 2

1.1 log4j介绍 ........................................................................................................................ 2 1.2 Log4j的获取 .................................................................................................................... 3 二、在Eclipse中使用Log4j ........................................................................................................ 3

2.1 在Eclipse中使用Log4j ................................................................................................ 3 三、Log4j 的配置文件 ................................................................................................................... 3

3.1 Log4j的配置文件 ............................................................................................................ 3 3.2 在代码中初始化Logger: ................................................................................................ 4

3.3 为不同的 Appender 设置日志输出级别: ................................................................. 5 四、Log4j输出格式定义 ................................................................................................................ 6 五、在Java类文件里使用Log4j .................................................................................................. 6

5.1、Import需要的包文件 .................................................................................................... 6 5.2 定义Logger对象 ............................................................................................................. 6 5.3 装载属性文件 ................................................................................................................... 7 5.4、任何地方可以使用 ......................................................................................................... 7 5.5一个普通的应用结构如下的内容: ................................................................................ 8 附录:Log4j常用配置(.properties和.xml) ......................................................................... 9

一、Log4j简介

1.1 log4j介绍

Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过 Logger.getLogger(String name)方法。 Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,如 console、files、GUI components、NT Event Loggers等,一个Logger可以拥有多个Appender,也就是你既可以将Log信息输出到屏幕,同时存储到一个文件中。

Layout的作用是控制Log信息的输出方式,也就是格式化输出的信息。 Log4j中将要输出的Log信息定义了5种级别,依次为DEBUG、INFO、WARN、ERROR和FATAL,当输出时,只有级别高过配置中规定的级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码,这点实在是方便啊。

1.2 Log4j的获取

下载地址是:http://logging.apache.org/site/binindex.cgi,我下载到的版本是:logging-log4j-1.2.13.tar.gz,解压之后找到:logging-log4j-1.2.13\\logging-log4j-1.2.13\\dist\\lib目录下的log4j-1.2.13.jarr文件,这就是我们要用的jar文件了,其他文件暂时搁置不动。把这个文件拷贝到指定位置,比如D:\\Lib目录下。(待会我们会在应用程序工程中添加这个文件)。

二、在Eclipse中使用Log4j

2.1 在Eclipse中使用Log4j 2.1.1 新建Java项目时引入

第一种情况是在新建java项目时第二步骤选择【Libraries】-【Add External JARs…】选择log4j-1.2.13.jar,点击【打开】回到新建工程第二步骤的界面,点击完成。这样就引入了需要的库文件了。

2.1.2 向已经存在工程添加log4j-1.2.13.jar

如果工程已经存在,通过右击工程名称-【属性】-【java构建路径】-【添加外部JAR(X)】-选择log4j-1.2.13.jar,点击【打开】回到新建工程属性的界面-【确定】会到工程的界面。

2.1.3 导入Log4j.properties文件

通过工程的导入功能,直接把Log4j.properties文件导入到与工程最高层的目录。

三、Log4j 的配置文件

3.1 Log4j的配置文件

Log4J配置文件的基本格式如下:

#配置根Logger

log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , … #配置日志信息输出目的地Appender

log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 … log4j.appender.appenderName.optionN = valueN #配置日志信息的格式(布局)

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

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

其中 [level] 是日志输出级别,共有5级:

FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7

Appender 为日志输出目的地,Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(控制台), org.apache.log4j.FileAppender(文件),

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

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) Layout:日志输出格式,Log4j提供的layout有以下几种: 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平台为“\\r\\n”,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 )

3.2 在代码中初始化Logger:

1)在程序中调用BasicConfigurator.configure()方法:给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为\"%-4r [%t] %-5p %c %x - %m%n\",还有根记录器的默认级别是Level.DEBUG.

2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置;

3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;

4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。

3.3 为不同的 Appender 设置日志输出级别:

当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放在一个文件里的,如果日志输出的级别是BUG!?那就慢慢去找吧。

这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改Appender的Threshold 就能实现,比如下面的例子:

[配置文件]

### set log levels ###

log4j.rootLogger = debug , stdout , D , E

### 输出到控制台 ###

log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out

log4j.appender.stdout.layout = org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern =%d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n

### 输出到日志文件 ###

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = logs/log.log log4j.appender.D.Append = true

log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志 log4j.appender.D.layout = org.apache.log4j.PatternLayout

log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

### 保存异常信息到单独文件 ###

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = logs/error.log ## 异常日志文件名 log4j.appender.D.Append = true

log4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上的日志!!! log4j.appender.D.layout = org.apache.log4j.PatternLayout

log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

[代码中使用]

public class TestLog4j {

public static void main(String[] args) {

PropertyConfigurator.configure( \" D:/Code/conf/log4j.properties \" ); Logger logger = Logger.getLogger(TestLog4j. class ); logger.debug( \" debug \" ); logger.error( \" error \" ); }

}

四、Log4j输出格式定义

Log4j的格式定义是通过一个“.properties”文件定义的,该文件里面定义了很多关于数定格式和输出位置的元素,看看下面例子的.properties文件(例子中以Log4j.properties为名称)。切换log4j.rootLogger=debug, B1的B1或是A1,以及注释不同位置,实现日志输出到文件还是控制台。把这个Log4j.properties文件放置工程的最上层目录(与.jpx文件在同一目录)。

Log4j.properties的内容:

log4j.rootLogger=debug, B1 #打印到文件

#log4j.appender.A1=org.apache.log4j.RollingFileAppender #log4j.appender.A1.File=example.log #log4j.appender.A1.MaxFileSize=100KB #log4j.appender.A1.MaxBackupIndex=1

#log4j.appender.A1.layout=org.apache.log4j.PatternLayout

#log4j.appender.A1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n #打印到控制台

log4j.appender.B1=org.apache.log4j.ConsoleAppender log4j.appender.B1.layout=org.apache.log4j.PatternLayout

log4j.appender.B1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n log4j.appender.B1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

五、在Java类文件里使用Log4j

5.1、Import需要的包文件

import org.apache.log4j.*;把这个语句放置在文件的Import位置。 5.2 定义Logger对象

static Logger logger = Logger.getLogger(Frame1.class.getName());在程序申明变量的地方定义这个对象,并且是静态对象。其中的Frame1是你当前类的名称。

5.3 装载属性文件

PropertyConfigurator.configure(\"Log4j.properties\");在jbInit()方法的开始填写这个语句,把属性文件装载过来。

5.4、任何地方可以使用

在需要日志记录的地方输入类似 logger.info(\"日志信息\"); logger.warn(\"日志信息\"); logger.debug(\"日志信息\"); logger.fatal(\"日志信息\"); logger.error(\"日志信息\"); 比如: /**

* 主窗体组件初始化

* @throws java.lang.Exception */

private void jbInit() throws Exception {

PropertyConfigurator.configure(\"Log4j.properties\");

logger.info(logonuser + \" 初始化开始\"); // logonuser是登陆系统的用户名称 „„„„„„. „„„„„„. „„„„„„

logger.info(logonuser + \" 初始化结束\"); }

输出结果是:

INFO [AWT-EventQueue-0] (mainFrame.java:503) - Admin 初始化开始INFO [AWT-EventQueue-0] (mainFrame.java:1013) - Admin 初始化结束

到这里我们就完成了Log4j在Eclipse中的应用过程,输出日志的格式是不是很整齐,输出到文件的测试一样的过程,只是在Log4j.properties改成: Log4j.properties的内容: log4j.rootLogger=debug, A1 #打印到文件

log4j.appender.A1=org.apache.log4j.RollingFileAppender log4j.appender.A1.File=example.log log4j.appender.A1.MaxFileSize=100KB log4j.appender.A1.MaxBackupIndex=1

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n #打印到控制台

#log4j.appender.B1=org.apache.log4j.ConsoleAppender #log4j.appender.B1.layout=org.apache.log4j.PatternLayout

#log4j.appender.B1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n #log4j.appender.B1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

Log4j会在与Log4j.properties同目录的地方创建example.log文件,并记录日志信息,当文件的尺寸大于100KB时,log4J会创建一个新的example.log文件,同时备份example.log文件。备份的文件个数取决于MaxBackupIndex属性。 5.5一个普通的应用结构如下的内容:

package com.log4j;

import org.apache.log4j.*; /**

* @author Jem.lee */

public class MyLogTest {

static Logger logger = Logger.getLogger(MyLogTest.class.getName()); public static void main(String[] args) {

PropertyConfigurator.configure(\"Log4j.properties\"); MyLogTest.logger.info(\"测试信息开始\"); MyLogTest.logger.info(\"测试信息结束\"); } }

输出结果

INFO [main] (MyLogTest.java:16) - 测试信息开始 INFO [main] (MyLogTest.java:17) - 测试信息结束

附录:Log4j常用配置(.properties和.xml)

常用log4j配置,一般可以采用两种方式,.properties和.xml,下面举两个简单的例子:

一、log4j.properties

### 设置org.zblog域对应的级别INFO,DEBUG,WARN,ERROR和输出地A1,A2 ## log4j.category.org.zblog=ERROR,A1 log4j.category.org.zblog=INFO,A2

log4j.appender.A1=org.apache.log4j.ConsoleAppender ### 设置输出地A1,为ConsoleAppender(控制台) ##

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

### 设置A1的输出布局格式PatterLayout,(可以灵活地指定布局模式)## log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n

### 配置日志输出的格式##

log4j.appender.A2=org.apache.log4j.RollingFileAppender

### 设置输出地A2到文件(文件大小到达指定尺寸的时候产生一个新的文件)## log4j.appender.A2.File=E:/study/log4j/zhuwei.html ### 文件位置##

log4j.appender.A2.MaxFileSize=500KB ### 文件大小##

log4j.appender.A2.MaxBackupIndex=1

log4j.appender.A2.layout=org.apache.log4j.HTMLLayout ##指定采用html方式输出 二、log4j.xml

三、配置文件加载方法:

import org.apache.log4j.Logger;

import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.xml.DOMConfigurator; public class Log4jApp {

public static void main(String[] args) {

DOMConfigurator.configure(\"E:/study/log4j/log4j.xml\");//加载.xml文件 //PropertyConfigurator.configure(\"E:/study/log4j/log4j.properties\");//加载.properties文件

Logger log=Logger.getLogger(\"org.zblog.test\"); log.info(\"测试\"); } }

四、项目使用log4j

在web 应用中,可以将配置文件的加载放在一个单独的servlet中,并在web.xml中配置该servlet在应用启动时候加载。对于在多人项目中,可以给每一个人设置一个输出通道,这样在每个人在构建Logger时,用自己的域名称,让调试信息输出到自己的log文件中。 五、常用输出格式

# -X号:X信息输出时左对齐; # %p:日志信息级别

# %d{}:日志信息产生时间 # %c:日志信息所在地(类名) # %m:产生的日志具体信息 # %n:输出日志信息换行

因篇幅问题不能全部显示,请点此查看更多更全内容