让我们用日志的默认代码开始两个类之间:阿帕奇常用的日志记录
实现:
A类:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.cc.B;
public class A {
public static Log logger = LogFactory.getLog(A.class);
public static void main(String[] args) {
logger.info("Entering application.");
B b = new B();
b.doIt();
logger.info("Exiting application.");
}
}
B类:
package com.cc;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class B {
public static Log log = LogFactory.getLog(B.class);
public void doIt() {
log.debug("Did it");
}
}
执行:
16 mars 2012 09:31:35 com.cc.A main
INFO: Entering application.
16 mars 2012 09:31:35 com.cc.B doIt
INFO: Did it
16 mars 2012 09:31:35 com.cc.A main
INFO: Exiting application.
在B类
,取代public static Log log = LogFactory.getLog(B.class);
到public static Log log = LogFactory.getLog(A.class);
具有日志应用程序的任何影响。
我该如何登录到A类记录器?
发布您的log4j。属性,顺便说一句:你是什么意思只登录到类记录器?知道你的日志消息来自哪里是有道理的 - 你想达到什么目的? – quaylar 2012-03-16 08:55:22
这是我想要的: '16 mars 2012 09:31:35 com.cc.A main 信息:输入应用程序。 16 mars 2012 09:31:35 ** com.cc.A ** doIt 信息:是否 16 mars 2012 09:31:35 com.cc.A main INFO:退出应用程序.' – kaissun 2012-03-16 09:00:40
因为有也是一个方法名称,我认为com.cc.B是自动发现的,并且是调用记录器的方法的一部分地址。 'getLog'的类参数是AFAIK的便利和惯例,所以你可以很容易地通过包来控制日志级别。 (在包com.example.foo中记录DEBUG,但包com.example.bar中只包含INFO) – user1252434 2012-03-16 09:39:47