簡體   English   中英

Log4j創建動態文件

[英]Log4j to create dynamic files

我有一個文件處理JAVA代碼,在處理文件時,我想記錄所有文件處理細節,例如file的行數沒有,並且在每個文件正在處理的單獨的日志文件中都有一些“ Hello”字符串。

我在這里嘗試的代碼可以正常工作,但是如果我有2個文件,例如file1.txt和file2.txt。記錄器將log1.txt的詳細信息記錄在log_file1.log中,然后將log2.txt記錄在log_file2.log中則保留log_file1。日志內容也位於log_file2.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");
}
}

是否需要使用相同的類別(TestLoggerChild.class)? 如果您改為傳遞自定義的參數化字符串,則該字符串必須有效:DummyLog.getLogger(fileName,“ Category” + i);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM