java - Log4j创建动态文件

标签 java log4j

我有一个处理 JAVA 代码的文件,在处理文件时,我想记录所有文件处理详细信息,例如文件有多少行,并且在每个正在处理的文件的单独日志文件中都有一些“Hello”字符串。

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

文件1.txt

Hello How are you
Hello How are you

log_file1.log

it has 2 lines and 2 Hello Strings

文件2.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);

关于java - Log4j创建动态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394388/

相关文章:

java - log4j:如何记录记录器名称?

java - 如何避免应用程序日志中的 Spark 和 Hive 日志

java - Spring MVC 国际化

java - UTF-8 和 ISO 8859-1 之间的转换 :

java - 使用 okhttp 上传文件时出现奇怪的数据包

java - 快速查找 Java 是否从 Windows cmd 或 Cygwin 终端启动

java - Hibernate在表中查找唯一字符串的快速方法

java - log4J 导致错误 : The method getRootLogger() is undefined for the type Logger

java - log4j2 ERROR异常添加回车?

java.lang.NoClassDefFoundError : org/apache/log4j/Priority 错误