log4j介绍
Log4j,具体的我就不去拷贝官网的介绍了,大家只要知道这是帮助我们记录日志的就可以了。
作用就是这2个:
1、跟踪代码的运行轨迹。
2、输出调试信息
很简单,但是真的很实用的一个工具!不需要很深入的去了解,但是必须知道如何使用,如何通过Log4j去记录日志,这是必须的!
在这里,通过一个实例来演示如何使用log4j,以及如何配置log4j的配置文件。
log4j-jar包:
首先,我们需要准备一个Log4j的jar包,不多说,直接上链接:
版本为:log4j-1.2.17.(2016.8.22下载的最先版本)’
点我去下载log4j-1.2.17-jar包
三大组成就是如下三个类:
1、Logger类-生成日志。
2、Appender类-定义日志输出的目的地。
3、Layout类-指定日志输出的格式。
了解一下Logger组件:
日志共分为5种级别(ON开,OFF关这两个不计算在内),从高到底(从严重到轻微)排序为:
FATAL—严重的错误,可能会导致程序不能正常运行. 类似System.exit(),整个项目都不能运行
ERROR – 错误,影响程序的正常运行。 类似当前线程挂了,但其它线程或组件还在跑
WARN – 警告,不会影响程序的运行。最好将此问题修正。
INFO – 一般信息。不影响程序的运行。可能是用户的调试信息。可有可无。等同于system.err.
DEBUG – 一般的信息。等同于system.out
上面五种级别分别对应以下几个方法(Java中调用,等会会演示)
fatal(Object)
error(Object)
warn(Object)
info(Object)
debug(Object)
当信息大于或是等于配置的级别时才会输出日志。
Appender组件
我们只要记住下面这2个就可以了:
Console—控制台–org.apache.log4j.ConsoleAppender
File—文件–org.apache.log4j.FileAppender , org.apache.log4j.RollingFileAppender
Layout组件
功能是定义日志的输出格式
org.apache.log4j.HTMLLayout
org.apache.log4j.PatternLayout (自定义)
org.apache.log4j.SimpleLayout
就是输出到日志的时候,用哪种格式输出,理解成正则表达式就好了。
有一些转义是他规定好的,我这里列出一些,不用全部都记下来,了解就行了,然后记一个常用的匹配格式就OK!
只解释自定义格式PatternLayout:
%d – 具体的时间. %d{yyyy MMM dd HH:mm:ss,SSS} 输出类似:输出类似:2016年8月21日 00:00:00,921 %p – 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL %c – 输出所属的类目,通常就是所在类的全名 -Logger.getLogger(name) 其实就是输出这个name,所以,我们这里一般用当前类的class。 %L(这是大写的L) — 只输出行号 %l - 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:(Log4jDemo.java:13) %m – 输出代码中指定的消息-我们指定的 %n —换行符-Windows平台为“\r\n”,Unix平台为“\n” %r 输出自应用启动到输出该log信息耗费的毫秒数 %t 输出产生该日志事件的线程名
配置文件的一个模板:
在src/bin目录下(即WEB-INF/classes)建立一个log4j.properties文件.
在WEB-INF/classes目录下,为log4j的默认目录。Log4j.properties也是log4j的默认文件名。
#####配置根元素 log4j.rootLogger=INFO,console,file #存储INFO以及以上级别的记录 #file的输入地址为文件 #console表示输出到控制台 log4j.appender.file=org.apache.log4j.RollingFileAppender #以下是具体的目录 log4j.appender.file.File=d:/a/test.log #每个文件的最大大小 log4j.appender.file.MaxFileSize=20KB #最多可以是多少个文件 log4j.appender.file.MaxBackupIndex=3 #信息的布局格式-按指定的格式打出 log4j.appender.file.layout=org.apache.log4j.PatternLayout #具体的布局格式 - %d为时间 #log4j.appender.file.layout.ConversionPattern=%d %p [%c] %m %l %n log4j.appender.file.layout.ConversionPattern=%d %p [%l]\:%m -%t%n #以下配置输出到控制台的配置 log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout #log4j.appender.console.layout.ConversionPattern=%d %p [%c] %m%n log4j.appender.console.layout.ConversionPattern=%d %p [%l]\:%m -%t%n
演示实例:
package cn.hncu.lib; import org.apache.log4j.Logger; /** * @author 陈浩翔 * * 2016-8-23 */ public class Log4jDemo { public static void main(String[] args) { //日志的名字是传入的任何字符串,通常为类名或包名 Logger log = Logger.getLogger(Log4jDemo.class); for(int i=0;i<10;i++){ log.fatal("严重错误信息:"+i); log.error("错误信息:"+i); log.warn("警告信息:"+i); log.info("一般信息:"+i); log.debug("调试信息:"+i); } } }
演示结果:
控制台输出:
文件输出:
是不是很简单,配置好文件之后,我们在Java中用,只需要2步。
1、Logger log = Logger.getLogger(****
.class);
2、随意调用下面5个方法:
log.fatal(); log.error(); log.warn(); log.info(); log.debug(); 参数是Object类型!在日志中用%m来代表我们这里传的值的toString()。
如果要去更加详细了解的,可以去Log4j官网:
一个模板:
#####配置根元素 #调试模式,写成DEBUG ---设置日志级别-存储DEBUG以及以上级别的记录 log4j.rootLogger=DEBUG,console,file,error #生产级项目,写成INFO就可以了 #INFO级别比DEBUG级别高 ---console,file,error都是自己写的-名称自己定 ####以下配置输出到控制台的配置#### log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.Target=System.out #log4j.appender.console.layout.ConversionPattern=%d %p [%c] %m%n log4j.appender.console.layout.ConversionPattern=%d %p [%l]\:%m -%t%n ### 输出到日志文件 ### log4j.appender.file=org.apache.log4j.RollingFileAppender #以下是具体的目录 log4j.appender.file.File=info.log #每个文件的最大大小 log4j.appender.file.MaxFileSize=20MB #最多可以是多少个文件 log4j.appender.file.MaxBackupIndex=3 ## 输出INFO级别以上的日志 --Threshold是个全局的过滤器,它将把低于所设置的INFO的信息过滤不显示出来。 log4j.appender.file.Threshold=INFO #信息的布局格式-按指定的格式打出 log4j.appender.file.layout=org.apache.log4j.PatternLayout #具体的布局格式 - %d为时间 #log4j.appender.file.layout.ConversionPattern=%d %p [%c] %m %l %n log4j.appender.file.layout.ConversionPattern=%d %p [%l]\:%m -%t%n ### 保存异常信息到单独文件 ### log4j.appender.error = org.apache.log4j.DailyRollingFileAppender ## 异常日志文件名 log4j.appender.error.File = error.log log4j.appender.error.Append = true ## 只输出ERROR级别以上的日志!!! log4j.appender.error.Threshold = ERROR log4j.appender.error.layout = org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern = %d %p [%l]\:%m -%t%n