通常我们项目里,有一些重要的日志想单独的输出到指定的文件,而不是全总输出到系统的日志文件中。那么我们log4j为我们提供了这种功能,以下我们来一步一步看是怎么做的。这里以property的配置方式写。xml方式类似,想了解的,能够看官方文档。
这里測试的项目包结构例如以下:
log4j 主要由三部分组成:Loggers, Appenders 和Layouts,(appender 能够理解为输出的目的地)
咱们的log4j.properties或log4j.xml 里能够配置多个logger,
每一个logger 能够相应多个Appender,而appender和layout是一一相应的。
以下看最简单的配置,我们配置系统rootLogger,例如以下:
当中: 1、log4j.rootLogger 这个的配置三模式为:log4j.rootLogger=level,appender1,appender2,... level为日志等级。关系如:DEBUG < INFO < WARN < ERROR < FATAL,等级越小能够输出比自己大的日志,如设置为debug,能够输出warn,error,等的日志。 而紧跟在后面的是appender列表:appender1,appender2,... 2、log4j.appender.A_console=org.apache.log4j.ConsoleAppender 指定相应的appender类,这是输出到控制台。 3、log4j.appender.A_console.layout=org.apache.log4j.PatternLayout 。指定layout类, 4、log4j.appender.A_console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 输出格式化。详细怎么使用能够查询PatternLayout 这个api。 我们用一个main方法输出来看看日志打印效果 配置多个appener的情况 每一个logger能够相应多个appender,例如以下配置: 这样。当我们远行App时,日志会办出到控制台和mylog.log日志文件,这是就不再贴出来了。配置多个logger 情况 当我们须要对一些重要的日志进行抽取时,或系统中比較独立的模块,如专门与外部系统对接的接口。这时我们就能够配置多个logger,而实现日志分柝。便于我们的日常维护工作。我们以下在原来的基础上再添加两个logger ,分别为:“com.pt.test” 和“com.pt.test.intf”,命名都是用包名来定义的,看看具体的配置吧:我们注意到:新添加的两个logger 配置为:log4j.logger.com.pt.test=debug,A_file2 日志输出到:D:/test/logfile2.loglog4j.logger.com.pt.test.intf=debug,A_file3日志输出到:D:/test/logfile3.log我们看看三个文件的日志输出内容:logfile1.loglogfile2.loglogfile3.log这时我们会发现,filelog1,filelog2,filelog3都有打印了日志内容,细心的朋友应该会发现,filelog1里包括了filelog2里的全部内容,默认情况下,子Logger会的日志会向全部父级的appender输出,假设我们不想要这种输出那么我们能够把相应的Looger的additivity属性设置为false就能够了,如:把第17行凝视打开log4j.additivity.com.pt.test=false这样,rootLogger就不会再有Logger "com.pt.test" 及其子包里的日志了。 滚动生成日志文件的两种模式: 1、使用 RollingFileAppender 。这样的模式为以大小为基准生成日志文件,配置maxFileSize来限定每一个文件大小,当超出指定大小,系统会自己主动生成下一个文件,如以下面所看到的的appender:2、使用DailyRollingFileAppender ,这样的模式是按时间来分割文件。能够细每种生成一个文件如:log4j.appender.A_r_date.datePattern='.'yyyy-MM-dd-HH-mm'.log' 表示每分钟就会生成一个日志文件如:rollFiledate.log.2014-07-12-14-09.log rollFiledate.log.2014-07-12-14-10.log假设想配置每天一个日志文件则能够:log4j.appender.A_r_date.datePattern='.'yyyy-MM-dd'.log'web 项目中使用log4j我把仅仅要把写好的log4j.properties 放到src文件夹下就能够了。參考资料:http://logging.apache.org/log4j/1.2/manual.html