Apache 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" );
xy 指向完全相同的 logger 对象。
3.Log4j 使用流程
1 )根据配置文件初始化 log4j
       log4j 可以使用 3 种配置器来初始化:
BasicConfigurator,DOMConfigurator,PropertyConfigurator
这里用的是 PropertyConfigurator 。使用 PropertyConfigurator 适用于所有的系统。如下的语句。
PropertyConfigurator.configure( "log4j.properties" );
就以 log4j.properties 为配置文件初始化好了 log4j 环境。对于一般的 java project 可以不使用上面的语句初始化 log4jlog4j 会自动在 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 。 后面两行都是设置日志格式的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值