Log4j学习笔记

来源:互联网 发布:java正则表达式ip地址 编辑:程序博客网 时间:2024/05/29 06:28

<一> log4j组件介绍

        1.   Log4j主要有三个组件:    

  • Logger:负责供客户端代码调用,执行debug(Object msg)、info(Object msg)、warn(Object msg)、error(Object msg)等方法。
  • Appender:负责日志的输出,Log4j已经实现了多种不同目标的输出方式,可以向文件输出日志、向控制台输出日志、向Socket输出日志等。
  • Layout:负责日志信息的格式化。

<二>   Logger 层级介绍
         Logger的层级是logger名字指定的,如x.y 表示两层,x层和y层,x是y的父层级,x.y所在层级是y层级

         log4j.additivity.* = false : 表示当前logger不需要打到父层级所指定的appender,只打到当前的appender;默认true:表示当前logger将打印日志到当前的appender及所有的父层级所指定的appender。


<三>   执行顺序及关系
         调用Log4j输出日志时,调用各个组件的顺序:

  • 1、日志信息传入 Logger。
  • 2、将日志信息封装成 LoggingEvent 对象并传入 Appender。
  • 3、在 Appender 中调用 Filter 对日志信息进行过滤,调用 Layout 对日志信息进行格式化,然后输出。

<四>  下面是对log4j原理的解释,写的很好!

         http://www.blogjava.net/DLevin/archive/2012/07/10/382678.html

         http://gemantic.iteye.com/blog/1234996

         http://www.cnblogs.com/cy163/archive/2009/03/22/1419080.html

         http://blog.csdn.net/killer_zr/article/details/7188140


#根目录的日志级别是INFO,使用的appender是stout的appender,可以增加多个appender,但是第一个必须是日志级别#用法:第一个必须是日志级别,剩下的是多个appender#rootLogger是根目录的logger,每一个项目的classpath(src)就是根目录#只要是根目录中配置的要输出的appender都会输出log4j.rootLogger=INFO,stout,fout#定义标准输出log4j.appender.stout=org.apache.log4j.ConsoleAppender#定义用什么布局方式log4j.appender.stout.layout=org.apache.log4j.PatternLayout#定义layout的输出格式log4j.appender.stout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%C:%M()]-[%p] %m%n#定义一个文件输出log4j.appender.fout=org.apache.log4j.DailyRollingFileAppender#定义文件log4j.appender.fout.datePattern='.'yyyy-MM-dd#定义用什么布局方式log4j.appender.fout.layout=org.apache.log4j.PatternLayout#定义layout的输出格式log4j.appender.fout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%C:%M()]-[%p] %m%n#自定义logger,不建议使用log4j.logger.planner=INFO,fout#自定义logger,一下表示只有在com.steven.planner.service这个包中查找logger的输出信息log4j.logger.com.steven.planner.service=INFO,foutlog4j.logger.com.steven.planner.service=INFO   //如果没有写appender则会继承log4j.rootLogger所定义的appender类型,此时根目录继承的是stout和fout则这个包也会输出到屏幕和文件 



原创粉丝点击