weblogic上同一个服务器A,创建了2个线程thread1 thread2,每个线程中都使用log4j来输出日志。两个log4j.xml文件的输出文件名字是不同的。
我想让两线程把自己的信息输出到两个文件fiel1,file2里。但现在的结果是,乱输出。file1里有thread1的,也有thread2的;file2里也一样。我调试了一下,每当使用完DOMConfigurator(log4j.xml);之前创建出来的logger对象就不好用了。比如下面的伪代码:log1 = Logger.getLogger(“thread1”);
DOMConfigurator(log4j1.xml);log2 = Logger.getLogger(“thread2”);
DOMConfigurator(log4j2.xml);这时log1也变成了用log4j2.xml了。

解决方案 »

  1.   

    csdn这么冷,到现在没个人回复
      

  2.   

    对于logger对象,使用threadlocal进行一个处理看看,
    感觉还是共享方面出现问题了吧可能是
      

  3.   

    log1 = Logger.getLogger(“thread1”);
    DOMConfigurator(log4j1.xml);log2 = Logger.getLogger(“thread2”);
    DOMConfigurator(log4j2.xml); 这两句话的问题也太大了把你首先DOMConfigurator(log4j1.xml);写入到log4j1,DOMConfigurator(log4j2.xml); 这句话你写的是thread1和thread2,
      

  4.   


    为啥是thread1和thread2?
    这4句是在log1的在thread1里,log2在thread2里。我只是写在一起贴出来看。