zoukankan      html  css  js  c++  java
  • log4j

    一、介绍

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。并且这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

    1、日志的优先级
    从低到高,依次有:DEBUG,INFO,WARN,ERROR,分别用来指定这条日志信息的重要程度;如果定义了了输入的级别为INFO,则只有等于及高于这个级别的才进行处理,此时将输入INFO,WARN,ERROR。值得注意的是,级别中还有两个关键字,
    ALL:打印所有的日志,
    OFF:关闭所有的日志输出。

    2、输出端 Appender

    log4j提供了以下几种常用的输出目的地:
    org.apache.log4j.ConsoleAppender,将日志信息输出到控制台
    org.apache.log4j.FileAppender,将日志信息输出到一个文件
    org.apache.log4j.DailyRollingFileAppender,将日志信息输出到一个,并且每天输出到一个新的日志文件,按照不同的配置可以定义每月一个日志文件,或者每周,每天,每小时,每分钟等输出一个新的日志文件。
    org.apache.log4j.RollingFileAppender,将日志信息输出到一个文件,通过指定文件的的尺寸,当文件大小到达指定尺寸的时候会自动把文件改名,如名为example.log的文件会改名为example.log.1,同时产生一个新的example.log文件。如果新的文件再次达到指定尺寸,又会自动把文件改名为example.log.2,同时产生一个example.log文件。依此类推,直到example.log. MaxBackupIndex,MaxBackupIndex的值可在配置文件中定义。
    org.apache.log4j.WriterAppender,将日志信息以流格式发送到任意指定的地方。
    org.apache.log4j.jdbc.JDBCAppender,通过JDBC把日志信息输出到数据库中。
    org.apache.log4j.net.SMTPAppender,将日志信息以邮件的方式发送到指定的邮箱。

    3、输出格式(布局)layout
    通过appender可以控制输出的目的地,而如果要控制输出的格式,就可通过log4j的layout组件来实现。通过配置文件定义一个appender的输出格式,Log4j提供的布局模式有以下几种:
    org.apache.log4j.ConsoleAppender,输出到控制台
    org.apache.log4j.HTMLLayout,以HTML表格形式布局
    org.apache.log4j.PatternLayout,可以灵活地指定布局模式
    org.apache.log4j.SimpleLayout,包含日志信息的级别和信息字符串

     二、Log4j的配置   
      1、 建立Logger实例: 
      语法表示:public static Logger getLogger( String name) 
      实际使用:static Logger logger = Logger.getLogger(ServerWithLog4j.class.getName ()) ; 
     
      2、 读取配置文件: 
      获得了Logger的实例之后,接下来将配置Log4j使用环境: 
      语法表示: 
    或者直接放在src下把log4j.properties文件 
      BasicConfigurator.configure():自动快速地使用缺省Log4j环境。 
      PropertyConfigurator.configure(String configFilename):读取使用Java的特性文件编写的配置文件。 
      DOMConfigurator.configure(String filename):读取XML形式的配置文件。 
      实际使用: 
    PropertyConfigurator.configure("ServerWithLog4j.properties"); 
       
      3、 插入日志信息 
      完成了以上连个步骤以后,下面就可以按日志的不同级别插入到你要记录日志的任何地方了。 
      语法表示: 
      Logger.debug(Object message);//调试信息 
      Logger.info(Object message);//一般信息 
      Logger.warn(Object message);//警告信息 
      Logger.error(Object message);//错误信息 
      Logger.fatal(Object message);//致命错误信息 
      实际使用:logger.info("ServerSocket before accept: " + server); 

     

    三、定义配置文件

    1.配置根Logger
    log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …

      其中, level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者自定义的级别。 Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。 ALL: 打印所有的日志, OFF :关闭所有的日志输出。 appenderName 就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。

    2.配置日志信息输出目的地Appender
    log4j.appender.appenderName = fully.qualified.name.of.appender.class 

      log4j.appender.appenderName.option1 = value1 
      … 
      log4j.appender.appenderName.optionN = valueN 

    3.配置日志信息的格式(布局)
    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class 
      log4j.appender.appenderName.layout.option1 = value1 
      … 
      log4j.appender.appenderName.layout.optionN = valueN

    格式化日志信息

       %m 输出代码中指定的消息

       %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

       %r 输出自应用启动到输出该log信息耗费的毫秒数

       %c 输出所属的类目,通常就是所在类的全名

       %t 输出产生该日志事件的线程名

       %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”

       %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS}

       %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

  • 相关阅读:
    Javascript FP-ramdajs
    微信小程序开发
    SPA for HTML5
    One Liners to Impress Your Friends
    Sass (Syntactically Awesome StyleSheets)
    iOS App Icon Template 5.0
    React Native Life Cycle and Communication
    Meteor framework
    RESTful Mongodb
    Server-sent Events
  • 原文地址:https://www.cnblogs.com/wjk921/p/4909256.html
Copyright © 2011-2022 走看看