Я получаю этот вывод:
2012-03-17 18:13:37,859 INFO main cc.A Entering application.
2012-03-17 18:13:37,861 DEBUG main cc.A Did it
2012-03-17 18:13:37,861 INFO main cc.A Exiting application.
С этим кодом для A:
package com.cc;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.cc.B;
public class A {
static final Logger logger = LoggerFactory.getLogger(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.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class B {
private static final Logger logger = LoggerFactory.getLogger(A.class);
public void doIt() {
logger.debug("Did it");
}
}
И этот конфигдля log4j:
log4j.rootCategory = DEBUG, A1
log4j.appender.A1 = org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern = %d %-5p %t %c{2} %m%n
Но я не могу не задаться вопросом, действительно ли вы после того, как что-то идентифицировало приложение в каждой строке журнала?В этом случае просто добавьте имя приложения в шаблон журнала:
log4j.appender.A1.layout.ConversionPattern = %d %-5p %t %c{2} MyApplicationName %m%n
Если вы затем изменили обратно B на init logger, как показано ниже:
private static final Logger logger = LoggerFactory.getLogger(B.class);
Вместо этого вы бы получили следующие выходные данные:
2012-03-17 18:13:37,859 INFO main cc.A MyApplicationName Entering application.
2012-03-17 18:13:37,861 DEBUG main cc.B MyApplicationName Did it
2012-03-17 18:13:37,861 INFO main cc.A MyApplicationName Exiting application.