用log4j输出日志文件。
多线程运行时,每个线程的日志都写到一个文件中了,很混乱。
有办法在运行时指定输出的文件名吗

解决方案 »

  1.   

    可以 log4j.appender.file.File = C:\log.txt就可以了
      

  2.   

    不过还得在前加log4j.appender.file = org.apache.log4j.FileAppender
      

  3.   


    看清我的问题没有?
    我问的是如何把不同线程的log写到不同文件
      

  4.   

    不是呢,log4j不是有个appender.file嘛,这个配置可以在线程中修改的,相当于输出文件路劲就是个变量了,不过一般在程序中只有一个日志文件时都是写死的, 比如C:\log.txt。
      

  5.   

    是说appender.setFile( "XXX");这个吗?
    但是Logger logger = Logger.getLogger(A.class);
    都是从一个Logger中获取的实例,如果一个线程改了输出文件名,其他线程受不受影响?
      

  6.   

    当然可以。 你首先要了解log4j的输出配置。建议你下个log4j文档先看看。温馨提示:
    ### set log levels - for more verbose logging change 'info' to 'debug' ###
    log4j.rootLogger=info,stdout,file,cl log4j.logger.innerControlAction = info, console, innerControlAction### direct log messages to stdout ###
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{MM dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n### direct messages to file hibernate.log ###
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=clBackOffice.log
    log4j.appender.file.MaxFileSize=1024KB
    log4j.appender.FILE.MaxBackupIndex=20
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{MM dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
    log4j.appender.cl=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.cl.File=.//logs//clB2C_log.log
    log4j.appender.cl.DatePattern='_'yyyy-MM-dd
    log4j.appender.cl.layout=org.apache.log4j.PatternLayout
    log4j.appender.cl.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}][%m]%n
    ###definition for debug###
    #log4j.logger.java.sql=DEBUG
    #log4j.logger.org.springframework=DEBUG
    #innerControlAction Log
    log4j.appender.innerControlAction=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.innerControlAction.File=c://logs//innerControlAction.log
    log4j.appender.innerControlAction.DatePattern='.'yyyy-MM-dd'.log'
    log4j.appender.innerControlAction.encoding=GBK
    log4j.appender.innerControlAction.layout=org.apache.log4j.PatternLayout
    log4j.appender.innerControlAction.layout.ConversionPattern=[%d{yyyy-MM-dd HH\:mm\:ss} | %t | %c\:%L]%n[%p\: %m]%n看见innerControlAction 这个没有,然后你在你代码中这样:
    private Logger logger = Logger.getLogger("innerControlAction");然后日志就会输出到你指定的位置。