1

私はファイルを処理しているJAVAコードを持っています。ファイルを処理している間、ファイルにはこの行数があり、処理中のファイルごとに個別のログファイルにいくつかの「Hello」文字列があるなど、すべてのファイル処理の詳細をログに記録したいと思います。

ここで試したコードは正常に動作しますが、file1.txt と file2.txt のような 2 つのファイルがある場合、ロガーは file1.txt の詳細を log_file1.log に記録し、file2.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");
}
}
4

1 に答える 1

1

同じカテゴリ (TestLoggerChild.class) を使用する必要がありますか? 代わりにカスタムのパラメーター化された文字列を渡すと、うまくいくはずです: DummyLog.getLogger(fileName,"Category" + i);

于 2013-08-23T18:40:18.660 に答える