2015-04-17 2 views
1

Новая работа, новый язык ... java на этот раз. Я работаю над интеграцией log4j в новый продукт и после того, как некоторые проблемы справились с этим, но проблема остается, и я не уверен, как решить их.log4j.RollingFileAppender ни катится ни по времени

Использование log4j 1.2.17 с log4j-extras 1.2.17 для RollingFileAppender.

Проблема

Это не прокатит. Я хотел настроить его на каждую минуту, развивая это, чтобы проверить, что все работает, но все, что я получаю, это logs/stuff.log.

LogTest.java

package logTest; 

import org.apache.log4j.LogManager; 
import org.apache.log4j.Logger; 
import org.apache.log4j.xml.DOMConfigurator; 

public class LogTest { 

    static Logger logger = LogManager.getLogger(LogTest.class); 

    public static void main(String[] args) { 
     DOMConfigurator.configure("log4j.xml"); 

     logger.trace("trace"); 
     logger.debug("debug"); 
     logger.info("info"); 
     logger.warn("warn"); 
     logger.error("error"); 
    } 
} 

log4j.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration debug="true" 
        xmlns:log4j='http://jakarta.apache.org/log4j/'> 

    <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender"> 
     <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{yyyy MM dd HH:mm:ss} %5p %c{1} - %m%n"/> 
     </layout> 
    </appender> 

    <appender name="rollingAppender" class="org.apache.log4j.rolling.RollingFileAppender"> 
     <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
     <param name="FileNamePattern" value="logs/stuff.%d{yyyy-MM_HH-mm}.gz"/> 
     <param name="ActiveFileName" value="logs/stuff.log"/> 
     </rollingPolicy> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{yyyy MM dd HH:mm:ss} %5p %c{1} - %m%n"/> 
     </layout> 
    </appender> 
    <root> 
     <level value="INFO"/> 
     <appender-ref ref="consoleAppender"/> 
     <appender-ref ref="rollingAppender"/> 
    </root> 
</log4j:configuration> 

ответ

1

Ваш шаблон неправильно для rollingAppender ...

%%d{yyyy MM dd HH:mm:ss} 

Вы должны опускать первый "%"

Для второй проблемы (и я не использовал TimeBasedRollingPolicy) вам нужно установить фактическое временное окно в качестве параметра?

Я ответил на сообщение, подобное этому на днях, но не уверен, что он еще верен. См. Log4j2 auto rollover after specified duration

+0

Я понимаю, что DailyRotatingFileAppender не поддерживает сжатие, но это приемлемая потеря на данный момент. Все работает, спасибо! – dutt

+0

Sidenote, следует ли вместо этого переключиться на log4j2? – dutt

+0

@dutt Я предпочитаю Log4J2 лично и использовал бы это, если бы начал новый проект, это зависит от того, сколько материала у вас есть, что зависит от старого impl. Если вы используете SLF4J или что-то подобное, переключение реализаций в Log4J2, вероятно, не будет слишком большой проблемой. – BretC

Смежные вопросы