2013-08-23 241 views
0

我有一个文件处理JAVA代码,在处理文件时,我想记录所有的文件处理细节,如文件有这个no行,它有一个“你好”字符串在一个单独的日志文件中每个文件都在处理中。Log4j创建动态文件

我在这里试过的代码工作正常,但是如果我有2个文件,如file1.txt和file2.txt,则logger会在log_file1.log中记录file1.txt的详细信息,然后在log_file2.log中记录file2.txt还在log_file2.log中保留log_file1.log内容。

FILE1.TXT

Hello How are you 
Hello How are you 

log_file1.log

it has 2 lines and 2 Hello Strings 

FILE2.TXT

Hello How are you 
Hello How are you 
Hello How are you 

log_file2.log

it has 2 lines and 2 Hello Strings 
it has 3 lines and 3 Hello Strings 

代码我想:

public class DummyLog 
{ 
    private static PatternLayout patternLayout = new PatternLayout("%d{ISO8601}\t%p\t%c\t%m%n"); 

    public static Logger getLogger(String fileName, Class clazz) throws Exception 
     { 
      fileName = "D:/New folder/log-properties/" + fileName + ".log"; 
      Logger logger = Logger.getLogger(clazz); 
      FileAppender appender = new DailyRollingFileAppender(patternLayout, 
          fileName, "'.'yyyy-MM-dd"); 
      logger.addAppender(appender); 
      logger.setLevel(Level.DEBUG); 
      return logger; 
     } 
} 

主类:

public class TestDummyLog 
{ 
    public static void main(String args[]) throws Exception 
    { 
     for(int i = 2;i > 0;i--) 
     {   
       String loggerName = "Log1_"+new SimpleDateFormat("yyyyddMMHHmmssSSS").format(new Date()); 
       Logger logger = DummyLog.getLogger(loggerName, TestDummyLog.class); 
       logger.info("Joseph Micheal TestLogger:" +new SimpleDateFormat("yyyyddMMHHmmssSSS").format(new Date())); 
       new TestLoggerChild().getChileStuff(loggerName); 
       Thread.sleep(6000); 
     } 

    } 
} 

子类:

public class TestLoggerChild 
{ 
public static Logger logger = null; 
public void getChileStuff(String fileName) throws Exception 
{ 
    logger = DummyLog.getLogger(fileName,TestLoggerChild.class); 
    logger.info("Child Sample info message"+new SimpleDateFormat("yyyyddMMHHmmssSSS").format(new Date())); 
    logger.info("Class :::::: TestLoggerChild.class"); 
    logger.debug("fileName @@@@@@@@@@@@@:" + fileName); 
    logger.info("Sample info message"); 
    logger.warn("Sample warn message"); 
    logger.error("Sample error message"); 
    logger.info("Sample info message "); 
    logger.info("Class :::::: TestLoggerChild.class"); 
} 
} 
+0

抱歉,您能否重新解释您对问题的描述?我没有得到它:-(你有滚动日志文件的问题? –

+0

感谢您的回复请检查更新的说明。 – sunleo

+0

尝试logger.setAdditivity(false) –

回答

1

是否需要使用相同的类别(TestLoggerChild.class)?如果传递自定义参数化字符串,它必须工作:DummyLog.getLogger(fileName,“Category”+ i);