首页 > 代码库 > JavaEE 之 log4j

JavaEE 之 log4j

1.log4j

  a.概念:一个非常优秀的开源日志记录工具

  b.配置:

    ①src同目录下建立log4j.properties文件,书写:

log4j.rootLogger=debug,appender1    <!-- appender1是自己指定的名字 -->
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.SimpleLayout

    ②Loggers

      Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL
      DEBUG < INFO < WARN < ERROR < FATAL

    ③Appenders     

      org.apache.log4j.ConsoleAppender(控制台)
      org.apache.log4j.FileAppender(文件)
      org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)隔一段时间 layout
      org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
      org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

    ④Layout

      org.apache.log4j.HTMLLayout (以 HTML 表格形式布局)
      org.apache.log4j.PatternLayout (可以灵活地指定布局模式)
      org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串)
      org.apache.log4j.TTCCLayout (包含日志产生的线程、类别等等信息)

  c.使用:  

         private static Logger logger = Logger.getLogger(TestLogger.class); 

      public static void main(String[] args) {
        //  记录 debug 级别的信息   
            logger.debug("This is debug message.");  
            //  记录 info 级别的信息   
            logger.info("This is info message.");  
            //  记录 error 级别的信息   
            logger.error("This is error message."); 
            try{
                int i=1/0;
            }catch(Exception e){
                logger.error(e.getMessage());
            }
    }   

 

  d.例子:

    ①将错误信息输出到html文件中

log4j.rootLogger=debug,appender1  
log4j.appender.appender1=org.apache.log4j.FileAppender
log4j.appender.appender1.File=c:\\myLog4J.html
log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout

    ②输出日志信息到文件中

log4j.appender.appender2=org.apache.log4j.FileAppender
log4j.appender.appender2.File=c:\\myLog4J.txt
log4j.appender.appender2.layout=org.apache.log4j.SimpleLayout

    ③自定义输出样式

log4j.appender.appender3=org.apache.log4j.ConsoleAppender 
log4j.appender.appender3.layout=org.apache.log4j.PatternLayout  
log4j.appender.appender3.layout.ConversionPattern =%d{yyyy-MM-dd hh:mm:ss} %r %t %p - %c -%l -%m%n  

      %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 输出日志事件的发生位置,包括类目名、发生的线程

 

    ④按一定的频度滚动日志记录文件

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=‘.‘yyyy-MM-dd-HH-mm
log4j.appender.file.File=c:\\run.log
log4j.appender.file.Append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%c %x - %m%n        

      在DailyRollingFileAppender中可以指定monthly(每月)、 weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小时)和minutely(每分钟)六个频度,这是通过为 DatePattern选项赋予不同的值来完成的。DatePattern选项的有效值为:
      ‘.‘yyyy-MM,对应monthly(每月)
      ‘.‘yyyy-ww,对应weekly(每周)
      ‘.‘yyyy-MM-dd,对应daily(每天)
      ‘.‘yyyy-MM-dd-a,对应half-daily(每半天)
      ‘.‘yyyy-MM-dd-HH,对应hourly(每小时)
      ‘.‘yyyy-MM-dd-HH-mm,对应minutely(每分钟)

 

  e.简单解决中文

log4j.appender.appender3.encoding=GBK

 

JavaEE 之 log4j