zoukankan      html  css  js  c++  java
  • Log4j配置详解

    log4j简介和只有Logger类创建日志器
    2007年06月08日 星期五 上午 10:33
    Log4j由三个重要的组件构成:日志 信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有OFF、FATAL、ERROR、WARN、INFO、 DEBUG、ALL,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示 内容。
    1.   Log4j配置文件的语法
    配置根Logger : log4j.rootLogger = [ level ] , appenderName, appenderName, …
    level 是日志记录的优先级 , logger的level越低,表示该logger越详细 ; logging request的level越高,表示该logging request越优先输出 .  appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地.
    DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的
    INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程
    WARN level表明会出现潜在错误的情形
    ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行
    FATAL level指出每个严重的错误事件将会导致应用程序的退出
    ALL Level是最低等级的,用于打开所有日志记录
    OFF Level是最高等级的,用于关闭所有日志记录
    Log4j提供的appender有以下几种:
    org.apache.log4j.ConsoleAppender(控制台)
    org.apache.log4j.FileAppender(文件)
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
    Log4j提供的layout有以下几种:
    org.apache.log4j.HTMLLayout(以HTML表格形式布局)
    org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
    org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
    2. 代码中使用Log4j
    i.   获取日志记录器,这个记录器将负责控制日志信息.
    语法为: public static Logger getLogger( String name),通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器.
    a . 用同名参数调用Logger.getLogger(String name)将返回同一个logger的引用。故可以在一个地方配置logger,在另外一个地方获得配置好的logger,而无须相互间传递logger 的引用。即可在配置文件中配置log4j.logger.ID_LOG=DEBUG,A2    而private static Logger debug = Logger.getLogger("ID_LOG");将返回同一个logger的引用.
    b. logger的创建可以按照任意的顺序,即,父logger可以后于子logger被创建。log4j将自动维护logger的继承树。
    ii.  配置Log4j环境.
    语 法为: BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。 PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写的配置文件。 DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。
    iii.  插入记录信息
    语法为:
    Logger.debug ( Object message ) ;
    Logger.info ( Object message ) ;
    Logger.warn ( Object message ) ;
    Logger.error ( Object message ) ;
    3. 输出格式
    # %c 输出日志信息所属的类别的全名
    # %d 输出日志时间点的日期或时间,指定格式的方式:%d{yyy-MM-dd HH:mm:ss }
    # %l   输出日志事件的发生位置,即输出日志信息的语句处于它所在的类别的第几行
    # %m 输出信息,如log(message)中的message。
    # %n   输出一个列尾符号
    # %p   输出优先阶层, 即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,即为DEBUG
    # %r 输出自应用启动到输出该日志信息所耗费的毫秒数
    # %t 输出产生该日志事件的线程名
    # %f 输出日志信息所属的类别的类别名
    Log4jDemo.java 代码
    package com.nikee.log4j;  
     
    import org.apache.log4j.Logger;  
    import org.apache.log4j.PropertyConfigurator;  
     
    public class Log4jDemo {  
        public static void main(String argv[]) {  
            // Use the default configuration.  
             PropertyConfigurator.configure("./src/com/nikee/log4j/log4j.properties");  
             
            //Create a logger by the name of class Log4jTest.  
            Logger logger = Logger.getLogger(Log4jDemo.class);  
     
            // These requests will be enabled.  
             logger.info("This is an info.");  
             logger.warn("This is a warning.");  
             logger.error("This is an error.");  
             logger.fatal("This is a fatal error.");  
        }  

    log4j.properties文件
    log4j.rootLogger=INFO, A1, A2  
     
    # A1 is set to be a ConsoleAppender.  
    log4j.appender.A1=org.apache.log4j.ConsoleAppender  
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
    log4j.appender.A1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%C-%M] %m%n  
     
    # A2 is set to be a file  
    log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender  
    log4j.appender.A2.layout=org.apache.log4j.PatternLayout  
    log4j.appender.A2.layout.ConversionPattern=[%d{HH:mm:ss:SSS}][%C-%M] %m%n  
    log4j.appender.A2.File=./src/com/nikee/log4j/Log4jDemo.log   
    Log4j的编码习惯
    1. 让每个类都拥有一个private static的Logger对象,用来输出该类中的全部日志信息
    2. 使用xml文件来完成对log4j环境的配置。在项目的main class中的静态初始化块里放log4j环境的配置代码。注意:在一个项目中,log4j环境只需要被配置一次,而不是在每个使用了logger的类里都需要调用一次
    3. 用MyClass.class作为参数创建该类的静态Logger对象

    作者:少帅

    出处:少帅的博客--http://www.cnblogs.com/wang3680

    您的支持是对博主最大的鼓励,感谢您的认真阅读。

    本文版权归作者所有,欢迎转载,但请保留该声明。

    支付宝 微信
  • 相关阅读:
    认知实习(杭钢、杭州中萃)
    Head of a Gang (map+邻接表+DFS)
    Sharing
    Hello World for U (20)
    计算器(delphi)
    CentOS 下 Codeblocks 的 安装 + 汉化 以及 基本使用介绍
    关于阿里如何吸引大学生用户理财的一些个人看法
    分页 存储过程
    点击退出,并未直接跳转到登陆界面,登录界面还停留在框架集界面
    梦幻之旅--地图编辑器开发
  • 原文地址:https://www.cnblogs.com/wang3680/p/3046690.html
Copyright © 2011-2022 走看看