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实例。
    private 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。后面两行都是设置日志格式的。
    5.Apache Log介绍集
    6.参考资料
    [1] Log4j官方手册
    [2] Log4j最简入门
  • 相关阅读:
    NanoProfiler
    NanoProfiler
    Open Source Cassandra Gitbook for Developer
    Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
    Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
    Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误
    Android Fragment使用(一) 基础篇 温故知新
    Set up Github Pages with Hexo, migrating from Jekyll
    EventBus源码解析 源码阅读记录
    Android M Permission 运行时权限 学习笔记
  • 原文地址:https://www.cnblogs.com/shanheyongmu/p/5650718.html
Copyright © 2011-2022 走看看