zoukankan      html  css  js  c++  java
  • Log4j使用实例

    1.Logger类

    通过Logger类的静态方法Logger.getRootLogger得到RootLogger。所有其他的loggers是通过静态方法Logger.getLogger来实例化并获取的。这个方法Logger.getLogger把所想要的logger的名字作为参数。 Logger类的一些其它基本方法在下面列出:

    package org.apache.log4j;

    public class Logger {

     

    // Creation and retrieval methods:

    public static Logger getRootLogger();

    public static Logger getLogger(String name);

     

    // printing methods:

    public void debug(Object message);

    public void info(Object message);

    public void warn(Object message);

    public void error(Object message);

    public void fatal(Object message);

     

    // generic printing method:

    public void log(Level l, Object message);

    }

     

     

     

    2. getLogger方法

    以一样的参数名字调用getLogger方法,返回的reference总是指向完全相同的logger对象。例如,在这里:

    Logger x = Logger.getLogger("wombat");

    Logger y = Logger.getLogger("wombat");

    x和y指向完全相同的logger对象。

     

    3.Log4j使用流程

    1)根据配置文件初始化log4j

           log4j可以使用3种配置器来初始化:

    BasicConfigurator,DOMConfigurator,PropertyConfigurator。

    这里用的是PropertyConfigurator。使用PropertyConfigurator适用于所有的系统。如下的语句。

    PropertyConfigurator.configure("log4j.properties");

    就以log4j.properties为配置文件初始化好了log4j环境。对于一般的java project 可以不使用上面的语句初始化log4j,log4j会自动在classpath下,找到配置文件并初始化。如果log4j不能自动初始化配置文件,那么就需要用上面的方法进行初始化。

           注意:初始化配置文件,最好只在系统启动的时候执行一次,如果执行多次,一是浪费资源,二就是对于老版本的log4j,使用DailyRollingFileAppender时,可能会出现问题。

     

    2)导入org.apache.log4j.Logger;及相关包。

     

    3)在需要使用log4j的地方获取Log实例。

    static Logger log = Logger.getLogger("MyCLASS.class");

     

    4)使用Logger对象的debug,info,fatal...方法。

    log.debug("it is the debug info");

     

    4.Log4j使用示例

    Test.java

    import org.apache.log4j.Logger;

     

    public class Test {

        static Logger log= Logger.getLogger(Test.class);

        public void log(){

           log.debug("Debug info.");

           log.info("Info info");

           log.warn("Warn info");

           log.error("Error info");

           log.fatal("Fatal info");

        }

        public static void main(String[] args) {

           Test test = new Test();

           test.log();

        }

    }

     

     

     

    Log4j.properties(具体配置属性定义见《Log4j配置说明》)

    log4j.rootLogger=info, stdout

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender

    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

    # Pattern to output the caller's file name and line number.

    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

     

     

    结果

    INFO [main] (Test.java:16) - Info info

    WARN [main] (Test.java:17) - Warn info

    ERROR [main] (Test.java:18) - Error info

    FATAL [main] (Test.java:19) - Fatal info

     

    分析:

    Test.java

    “Logger.getLogger(Test.class);”这里的“Test.class”事实上传进去的是Test这个类的完整路径(包名+类名),“test.Test”。这样如果存在“test”这个Log那么Test这个Log就继承它,否则就继承rootLogger。

     

    Log4j.properties

    第一行,配置log4j.rootLogger。应为它是根,必须配置,否则别的Log无法继承。其他的Log可以配置也可以不配置。等号后面的第一个参数表示日志级别,可以填五个级别中的一种(Log4j默认把日志信息分为五个等级debug < info < warn < error < fatal),后面的参数都是让Log知道输出到哪里,如果你想让日志输出到两个地方就加两个输出参数,比如:

    log4j.rootLogger=info, stdout

    这里的info表示,该Log的日志级别为info,所有级别小于info的日志都不会被记录。比如使用这个配置文件的话,我刚开始举的那个类中

    log.debug("Debug info.");

    这句话是不起作用的,因为debug的级别小于info。这样就很容易控制什么信息在调试的时候要显示,什么信息在发布的时候要去掉。这些都不用改代码。

           配置stdout,这个名字是随便取的,你可以叫它A:

    log4j.appender.A=org.apache.log4j.ConsoleAppender

    那么上面的rootLogger的参数stdout也要改成A,其他用到的地方当然也要改。这里的关键不是名字,而是appender类型,比如这里的“ConsoleAppender”,指输出到Console。后面两行都是设置日志格式的。

    付:log4j.property

    1) 把log4j.properties或是log4j.xml放在src根下(ClassPath路径中),或者结合spring的配置在web.xml中
    > log4j.properties内容举例如下:
    log4j.rootCategory=DEBUG, stdout, R

    #Console config
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=<%d> <%-5p> <%c> - %m(%F:%M:%L)%n

    #File config
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=${catalina_home}/logs/test.log
    log4j.appender.R.MaxFileSize=100KB
    log4j.appender.R.MaxBackupIndex=0
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=<%d> <%-5p> <%c> - %m(%F:%M:%L)%n

    #Package config
    log4j.logger.org.apple=DEBUG
    log4j.logger.org.apache.commons=ERROR
    log4j.logger.org.springframework=ERROR
    log4j.logger.org.apache.struts=ERROR

     

    另从 http://www.javaeye.com/topic/8307 看到 以下代码可能 可以借鉴

    Code
  • 相关阅读:
    4 Apr 18 软件开发目录 logging模块的使用 序列化(Json, Pickle) os模块
    3 Apr 18 内置函数 列表生成式与生成器表达式 模块的使用之import 模块的使用之from…import…
    2 Apr 18 三元表达式 函数递归 匿名函数 内置函数
    30 Mar 18 迭代器 生成器 面向过程的编程
    29 Mar 18 函数 有参、无参装饰器
    28 Mar 18 函数
    27 Mar 18 函数的参数
    26 Mar 18 函数介绍
    23 Mar 18 文件处理
    22 Mar 18 补充数据类型+字符编码+文件处理
  • 原文地址:https://www.cnblogs.com/cy163/p/1419080.html
Copyright © 2011-2022 走看看