Предоставляет ли log4j какой-либо механизм для ежедневного архивирования журнала? - PullRequest
6 голосов
/ 06 января 2011

Предоставляет ли log4j 1.2 какой-либо механизм для ежедневного архивного журнала?

Все говорят, что я могу сделать это через org.apache.log4j.rolling.TimeBasedRollingPolicy, но в источниках 1.2.15 я не вижу ни одногоКласс TimeBasedRollingPolicy.

Я нашел разрешение:

<appender name="FILE" class="org.apache.log4j.rolling.RollingFileAppender">
   <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

   <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
       <param name="ActiveFileName" value="${jboss.server.log.dir}/server.log"/>
       <!-- roll log file once a day -->
       <param name="FileNamePattern" value="${jboss.server.log.dir}/archives/server.log.%d.gz"/>
   </rollingPolicy>

   <!-- A PatternLayout that limits the number of lines in stack traces -->
   <layout class="com.mtvi.log4j.StackTraceLimitingPatternLayout">
       <!-- The full pattern: Date MS Priority [Category] (Thread) Message\n -->
       <param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
   </layout>
</appender>

Ответы [ 4 ]

4 голосов
/ 06 января 2011

Вам необходимо определить ваш appender как DailyRollingFileAppender и определить шаблон даты, который будет соответствовать дневной детализации.Ниже приведен пример приложения с именем file, который выводится в файл application.log и ежедневно катит файл, добавляя дату к концу после полуночи и начиная новый файл.определите свои логгеры (или rootLogger) для вывода на этот аппендер.Например:

log4j.rootLogger=debug, file
3 голосов
/ 06 января 2011

То, что вы просите, можно сделать с помощью DailyRollingFileAppender .

1 голос
/ 13 июня 2018
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=application.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %5p [%t] - %m%n

Настройка log4j.Appender.file, как указано выше, в моем файле application.properties, похоже, не работает в моем SpringBootApplication. В конце концов, я использовал решение для файла logback-spring.xml. Файл помещается в src / main / recources (папка по умолчанию, куда вы обычно помещаете свой файл application.properties).

В файле pom.xml не требуется зависимости maven, но создайте папку / logs / archived в корневом каталоге вашего приложения. Файл 'nameOfYourLog.log' будет автоматически архивирован на следующий день в папку ./logs/archived. Поскольку эта папка расположена за пределами вашего файла JAR, она легко доступна для просмотра журнала (на нужную дату), когда она развернута на рабочем сервере.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="DEV_HOME" value="./logs" />
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
            </Pattern>
        </layout>
    </appender>
    <!--<appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
    <appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${DEV_HOME}/nameOfYourLog.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} - %msg%n
            </Pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <logger name="com.the.package.you.wish.to.log" level="debug" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE-AUDIT" />
    </logger>

    <root level="error">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE-AUDIT" />
    </root>

</configuration>
0 голосов
/ 13 апреля 2018

Использование log4j-extras:

<appender name="FILE" class="org.apache.log4j.rolling.RollingFileAppender">
   <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

   <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
       <param name="ActiveFileName" value="${jboss.server.log.dir}/server.log"/>
       <!-- roll log file once a day -->
       <param name="FileNamePattern" value="${jboss.server.log.dir}/archives/server.log.%d.gz"/>
   </rollingPolicy>

   <!-- A PatternLayout that limits the number of lines in stack traces -->
   <layout class="com.mtvi.log4j.StackTraceLimitingPatternLayout">
       <!-- The full pattern: Date MS Priority [Category] (Thread) Message\n -->
       <param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
   </layout>
</appender>

Примечание : Этот ответ был извлечен из вопроса ОП, чтобы сохранить правильный формат, предписанный Stack Exchange. (ОП явно не ответил на комментарий jbx.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...