如题,比如,我有Test1.java  Test2.java 两个文件,这两个文件里都有很多的system.out.println();语句,我能否实现通过log4j或者是其他什么技术,统一配置后,可以分别将这两个文件中的打印语句实现分流保存成不同的log文件?即,Test1.log 里放的都是Test1.java的打印语句,Test2.log 放的都是Test2.java的打印语句。不要跟我说直接在java文件里去写打印到不同文件的这种办法,因为现在的情况是,我有N多个类,里面有很多sysout语句,不可能一个一个去改的。如果能实现,大致的实现思路是怎样的,请讨论下~~~~~ 3Q

解决方案 »

  1.   

    配置不同的log对象即可。http://hi.baidu.com/jsoftware/blog/item/06e386f2749e4514b17ec55c.html
      

  2.   


    看到了,看样子是可行的,但是原文里只提到log4j的打印信息。想问下,log4j能够实现收集system.out.println语句?也就是说,我原有的这些语句,不用修改成log4jTest.log();这样的。
      

  3.   

    代码中出现成批的 System.out.println,如果不是程序员的问题,那就是公司代码管理上的问题。
      

  4.   


    确实是出现了大量的sysout 但是现在就是需要去将这么多的sysout通过log4j去讲sysout打印到log文件中,你说的 重定向标准输出流
     是不是得一条一条sysout去修改?? 能不能不要这么麻烦的呢??
      

  5.   

    已经很详细了,你自己看看再说
    可以指定针对一个类的log,不过不知道要你指定多少个
      

  6.   


    不需要一条一条地改,只要在启动程序最开始加一句代码就可以了,参考这个帖子我在 27、28 楼的回复:http://topic.csdn.net/u/20100106/14/c3077ff9-b5ad-4733-8c69-e764f9e0819a.html
      

  7.   

    如果想让不同类中的输出弄到不同的日志文件中去,可是可以做到,但是效率将会很差,因为需要动态地寻找日志记录器。我的建议是将代码中的 System.out.println 改为 log 输出。不要怕麻烦,记住这次教训之后,保证你们今后不会再这样去做了!如果告诉你可以重定向到日志中去的话,我敢保证你们今后在代码中照样还是 System.out.println,因为印象不深刻!
      

  8.   

    重定向标准输出流还有个缺点,会影响到所有的 System.out.println 输出,如果是独立的应用程序那没有什么问题,如果是在容器中运行的程序,那很有可能会把容器中的输出也重向定过来了。