我的测试似乎产生了预期的结果。请注意,我使用的是Log4JStopWatch
,而不是LoggingStopWatch
:
package test;
import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
import org.perf4j.StopWatch;
import org.perf4j.log4j.Log4JStopWatch;
public class Perf4jMdcTest {
private Logger _ = Logger.getLogger(Perf4jMdcTest.class);
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
new Thread() {
@Override
public void run() {
MDC.put("id", getName());
Perf4jMdcTest perf4jMdcTest = new Perf4jMdcTest();
perf4jMdcTest.test1();
perf4jMdcTest.test2();
MDC.clear();
}
}.start();
}
}
private void test1() {
_.info("test1");
StopWatch stopWatch = new Log4JStopWatch();
stopWatch.start("a");
try { Thread.sleep(300); }
catch (InterruptedException e) { }
stopWatch.stop();
}
private void test2() {
_.info("test2");
StopWatch stopWatch = new Log4JStopWatch();
stopWatch.start("b");
try { Thread.sleep(600); }
catch (InterruptedException e) { }
stopWatch.stop();
}
}
我的 log4j.properties 如下:
log4j.rootLogger=debug, 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=%d [%-5p] MDC:%X{id} - %m%n
输出是:
2012-03-26 20:37:43,049 [INFO ] MDC:Thread-1 - test1
2012-03-26 20:37:43,050 [INFO ] MDC:Thread-3 - test1
2012-03-26 20:37:43,049 [INFO ] MDC:Thread-2 - test1
2012-03-26 20:37:43,353 [INFO ] MDC:Thread-2 - start[1332787063053] time[300] tag[a]
2012-03-26 20:37:43,353 [INFO ] MDC:Thread-2 - test2
2012-03-26 20:37:43,353 [INFO ] MDC:Thread-1 - start[1332787063053] time[300] tag[a]
2012-03-26 20:37:43,354 [INFO ] MDC:Thread-1 - test2
2012-03-26 20:37:43,353 [INFO ] MDC:Thread-3 - start[1332787063053] time[300] tag[a]
2012-03-26 20:37:43,354 [INFO ] MDC:Thread-3 - test2
2012-03-26 20:37:43,955 [INFO ] MDC:Thread-2 - start[1332787063354] time[600] tag[b]
2012-03-26 20:37:43,955 [INFO ] MDC:Thread-1 - start[1332787063354] time[601] tag[b]
2012-03-26 20:37:43,955 [INFO ] MDC:Thread-3 - start[1332787063354] time[601] tag[b]