很详细的Log4j配置步骤

2016-02-19 11:41 4 1 收藏

下面图老师小编要跟大家分享很详细的Log4j配置步骤,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - 编程语言 】

1. 配置文件
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平台为“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 )

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. 为不同的 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 " );
}
}

运行一下,看看异常信息是不是保存在了一个单独的文件error.log中

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1598201.html

延伸阅读
标签: Java JAVA基础
j2ee doc 之 配置指南 关键词:Java 声明:本文档由freehero翻译,未经作者同意不能用于商业用途,您可以自由的复制和传播,文档只供您理解j2ee,因作者能力有限,建议您同时阅读英文文档,对于因为翻译的错误代来的后果作者不负任何责任,欢迎您来信讨论freehero@163.net j2ee配置指南 1。介绍 本文介绍j2ee环境的配置,所有涉及的文件...
标签: 汽车
侧方位停车     侧方停车主要考察学员掌握将车正确停于路边车位或车库中的技能,要求学员在不碰、擦库位桩杆,车轮不轧碰车道边线、库位边线的情况下,通过一进一退的方式,将整车移入右侧库位中。 操作要求     学员在不停车,车轮不轧碰车道边线、库位边线的情况下,通过一进一退的方式,将整车移入右侧库位中。 ...
标签: 网店 淘宝网店
进浏览器 首先,登陆淘宝网(百度输入“淘宝网”,第一个便是)。 进入网页 在进入的淘宝网页的左上角找到“免费注册”字样,如下截图。 填写信息 点击“免费注册”,在注册页面填写相关信息,如下截图。 输校验码 填写完毕之后点击“下一步”,出现如下界面。 点击确定 填写你的手机收到的验...
iPhone SE配置详细参数   苹果正式发布4寸iPhone SE,外观几乎跟5S一样iPhone SE搭载和iPhone 6s一样的苹果A9双核处理器,提供16GB/64GB两种容量规格,采用分辨率为1136x640图老师的4英寸屏幕,后置1200万像素摄像头+前置120万像素摄像头,内置1550mAh容量电池,运行iOS 9.3系统,全网通网络制式,支持指纹识别、VoLTE。下面,就是...
标签: Web开发
我们经理让我配置iis6支持jsp的运行环境,我用的是:resin 3.0.8,j2sdk1.5,iis6. 昨天配置了一天,运行resin-3.0.8in下的httpd.exe的时候老是出现以下提示:Specification version 1.5 of package javax.management, Java Platform API Specification, version 1.5 is not compatible with Resin 3.0.8. Resin 3.0.8 requires version 1.2.。...

经验教程

12

收藏

29
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部