使用日期设置日志文件名

时间:2013-12-26 07:54:17

标签: java log4j log4j2 log4

我有这个写入日志消息的Log4J配置。

BasicConfigurator.configure();  // Basic configuration for Log4J 1.x

        ConsoleAppender console = new ConsoleAppender(); //create appender
        //configure the appender
        String PATTERN = "%d [%p|%c|%C{1}] %m%n";
        console.setLayout(new PatternLayout(PATTERN));
        console.setThreshold(Level.FATAL);
        console.activateOptions();
        //add appender to any Logger (here is root)
        Logger.getRootLogger().addAppender(console);

        DailyRollingFileAppender fa = new DailyRollingFileAppender();
        fa.setName("FileLogger");
        fa.setFile("log" + File.separator + "messages.log");
        fa.setDatePattern("'.'yyyy-MM-dd");
        fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
        fa.setThreshold(Level.DEBUG);
        fa.setAppend(true);
        fa.activateOptions();

        //add appender to any Logger (here is root)
        Logger.getRootLogger().addAppender(fa); //repeat with all other desired appenders

我对代码配置有误。我想每天写新的日志文件,日期作为名称。现在我只得到名称messages.log而没有日期。你能帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

无需担心,您的代码很好:)

当前日志文件名为messages.log

仅当下一个文件启动时,此名称才会更改。

来自javadoc

  

例如,如果File选项设置为/foo/bar.log并且   DatePattern设置为'。'yyyy-MM-dd,在2001-02-16午夜,   日志文件/foo/bar.log将被复制到/foo/bar.log.2001-02-16   2001-02-17的日志记录将在/foo/bar.log中继续,直到它为止   第二天翻身

答案 1 :(得分:1)

试试这个:

String PATTERN = "%d{DATE} [%p|%c|%C{1}] %m%n";

答案 2 :(得分:0)

也许你想要这个功能:https://issues.apache.org/jira/browse/LOG4J2-239(»RollingFileAppender应该支持直接记录到filePattern中引用的文件«)