继续接着Log4J入门教程(一)中的例子进行讲解,其中log4j.properties中的内容为    Log4j的三个重要组件—— Loggers, Appenders, Layouts ,这三个组件协同的工作,使得开发者能够依据信息类别和级别去纪录信息,并能够运行期间,控制信息记录的方式已经日志存放地点。

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,当输出时,只有级别高过配置中规定的 级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码,这点实在是方便啊。

log4j.rootLogger=info, stdout, log, errorlog
log4j.Logger=search,Test
###Console ###
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} [ %t ] [ %p ]:%L - %m%n
### Log ###
log4j.appender.log = org.apache.log4j.DailyRollingFileAppender
log4j.appender.log.File = log/log.log
log4j.appender.log.Append = true
log4j.appender.log.Threshold = INFO
log4j.appender.log.DatePattern='.'yyyy-MM-dd
log4j.appender.log.layout = org.apache.log4j.PatternLayout
log4j.appender.log.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t ] %m%n
### Error ###
log4j.appender.errorlog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorlog.File = log/errorlog.log
log4j.appender.errorlog.Append = true
log4j.appender.errorlog.Threshold = ERROR
log4j.appender.errorlog.DatePattern='.'yyyy-MM-dd
log4j.appender.errorlog.layout = org.apache.log4j.PatternLayout
log4j.appender.errorlog.layout.ConversionPattern =%-d{yyyy-MM-dd HH:mm:ss} [ %t ] %m%n

配置根Logger,其语法为:

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

level 是日志记录的优先级

#log4j中有五级logger,他们的优先级是依次降低

#FATAL

#ERROR

#WARN

#INFO

#DEBUG

它相当于一个总控开关,只有级别到这个极端的或以上的日志才被记录

appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。

配置日志信息输出目的地Appender,其语法为

log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
log4j.appender.appenderName.option = valueN

Log4j提供的layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

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

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

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

打印参数:

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

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   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

特别注意以下参数设置:

  1. log4j.appender.log.Threshold = ERROR

它是表示在总控开关的前提,觉得精确,只有达到这个级别的日志才被记录到这个文件中

参考文章:

http://www.blogjava.net/rickhunter/articles/28133.html

最新文章

  1. Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙
  2. JProfiler学习笔记
  3. The method setCharacterEncoding(String) is undefined for the type HttpServletResponse 是什么原因?
  4. Sharepoint 2013 列表使用JS Link
  5. RPi 2B 中文语言包
  6. 获取sql执行时间
  7. JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象
  8. Bin、App_Data等文件夹详述(转自http://blog.csdn.net/zzjiadw/article/details/6801506)
  9. Java多线程之线程的同步
  10. 实现dedecms全站动态浏览 并实现伪静态
  11. NVL2 这个函数,
  12. centos7 安装docker
  13. JavaScript 异步编程的前世今生(下)
  14. 基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件
  15. 查看和设置MySQL数据库字符集(转)
  16. UVa 297 四分树
  17. [Postman]生成代码段(17)
  18. 2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
  19. git回退代码到某次commit
  20. WhereHows前后端配置文件

热门文章

  1. 32.DDR2仿真结果
  2. PSP0表格二
  3. nodejs笔记三--url处理、Query String;
  4. Android中的单位及测试相关概念
  5. OSGi运行环境下java反序列化问题的解决方式
  6. 自己学习编程时间比较短,现在把一下自己以前刚刚接触C++时的程序上传一下,有空可以看看
  7. 利用doScroll在IE浏览器里模仿DOMContentLoaded
  8. HDU 5568 sequence2 区间dp+大数
  9. Android入门视频推荐
  10. 运用socket实现简单的服务器客户端交互