1、Log4j总结文档LOG4J使用总结目录一、Log4j简介 31.1 log4j介绍 31.2 Log4j的获取 3二、在Eclipse中使用Log4j 32.1 在Eclipse中使用Log4j 3三、Log4j 的配置文件 43.1 Log4j的配置文件 43.2 在代码中初始化Logger: 53.3 为不同的 Appender 设置日志输出级别: 5四、Log4j输出格式定义 6五、在Java类文件里使用Log4j 75.1、Import需要的包文件 75.2 定义Logger对象 75.3 装载属性文件 75.4、任何地方可以使用 75.5一个普通的应用结构如下的内容: 8附录:Lo
2、g4j常用配置(.properties和.xml) 10一、Log4j简介1.1 log4j介绍Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过 Logger.getLogger(String name)方法。 Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持
3、多种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:/l
4、ogging.apache.org/site/binindex.cgi,我下载到的版本是:logging-log4j-1.2.13.tar.gz,解压之后找到:logging-log4j-1.2.13logging-log4j-1.2.13distlib目录下的log4j-1.2.13.jarr文件,这就是我们要用的jar文件了,其他文件暂时搁置不动。把这个文件拷贝到指定位置,比如D:Lib目录下。(待会我们会在应用程序工程中添加这个文件)。二、在Eclipse中使用Log4j2.1 在Eclipse中使用Log4j 2.1.1 新建Java项目时引入 第一种情况是在新建java项目时第二步骤
5、选择【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.
6、1 Log4j的配置文件Log4J配置文件的基本格式如下: #配置根Loggerlog4j.rootLogger = level , appenderName1 , appenderName2 , #配置日志信息输出目的地Appenderlog4j.appender.appenderName = fully.qualified.name.of.appender.classlog4j.appender.appenderName.option1 = value1log4j.appender.appenderName.optionN = valueN#配置日志信息的格式(布局)log4j.appen
7、der.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.ConsoleAppende
8、r(控制台), 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.
9、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 输出一个
10、回车换行符,Windows平台为“rn”,Unix平台为“n” %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%dyyy 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,输出
11、格式通过PatternLayout设为%-4r %t %-5p %c %x - %m%n,还有根记录器的默认级别是Level.DEBUG. 2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(argsx)解析并配置;3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。3.3 为不同的 Appender 设置日志输出级别:当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放
12、在一个文件里的,如果日志输出的级别是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.ou
13、t log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =%dABSOLUTE %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
14、.Threshold = DEBUG # 输出DEBUG级别以上的日志 log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-dyyyy-MM-dd HH:mm:ss %t:%r - %p %m%n # 保存异常信息到单独文件 # log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = logs/error.log # 异常日志文件
15、名 log4j.appender.D.Append = true log4j.appender.D.Threshold = ERROR # 只输出ERROR级别以上的日志! log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-dyyyy-MM-dd HH:mm:ss %t:%r - %p %m%n 代码中使用 public class TestLog4j public static void main(String args) Propert
16、yConfigurator.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
17、, 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#log4
18、j.appender.A1.layout=org.apache.log4j.PatternLayout#log4j.appender.A1.layout.ConversionPattern=%5p %t (%F:%L) - %m%n#打印到控制台log4j.appender.B1=org.apache.log4j.ConsoleAppenderlog4j.appender.B1.layout=org.apache.log4j.PatternLayoutlog4j.appender.B1.layout.ConversionPattern=%-4r %-5p %t %37c %3x - %m%nl
19、og4j.appender.B1.layout.ConversionPattern=%5p %t (%F:%L) - %m%n五、在Java类文件里使用Log4j5.1、Import需要的包文件import org.apache.log4j.*;把这个语句放置在文件的Import位置。5.2 定义Logger对象static Logger logger = Logger.getLogger(Frame1.class.getName();在程序申明变量的地方定义这个对象,并且是静态对象。其中的Frame1是你当前类的名称。5.3 装载属性文件PropertyConfigurator.config
20、ure(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(L
21、og4j.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.properti
22、es改成:Log4j.properties的内容:log4j.rootLogger=debug, A1#打印到文件log4j.appender.A1=org.apache.log4j.RollingFileAppenderlog4j.appender.A1.File=example.loglog4j.appender.A1.MaxFileSize=100KBlog4j.appender.A1.MaxBackupIndex=1log4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.Conver
23、sionPattern=%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%nLog4j会在与Log4j.pr
24、operties同目录的地方创建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(); publi
25、c 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,下面举两个简单的
26、例子:一、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的输出布局格式PatterLa
27、yout,(可以灵活地指定布局模式)#log4j.appender.A1.layout.ConversionPattern=%dyyyy-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 param name=Appen
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1