1.引入
之前使用项目的pattern layout输出日志,单线程的时候没有问题,但是多线程情况下就很难区分是哪个线程打印的日志了,所以有必要将不同线程区分开来
2.解决方案
使用log4j配置文件中的%t,这样就可以区分不同的线程了
如:配置文件中
log4j.appender.console.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss,SSS} - %p - %t - %m%n
代码为:
public class Log4jTest {
@Test
public void test()
{
ExecutorService executor = Executors.newFixedThreadPool(3);
for (int i = 0; i < 2; i++) {
executor.execute(new myThread());
}
executor.shutdown();
}
}
class myThread implements Runnable
{
private static final Logger logger = LoggerFactory.getLogger("log4j.appender.console");
public void run()
{
logger.info("exe");
}
}<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
输出日志为:
2015/06/16 20:24:11,384 - INFO - pool-1-thread-2 - exe
2015/06/16 20:24:11,403 - INFO - pool-1-thread-1 - exe