Как Вы заставляете log4j прокручивать файлы на основе даты и размера?

27
задан Jose Chavez 27 April 2009 в 19:42
поделиться

4 ответа

Похоже, вам нужно сочетание http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html и http: / /logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/RollingFileAppender.html.

Вы должны будете написать самостоятельно. Хорошая новость заключается в том, что вам просто нужно «объединить» функциональность этих классов, новый код «низкого уровня» не требуется.

12
ответ дан razenha 14 October 2019 в 14:22
поделиться

Дополнительные функции Log4J из проекта «Компаньоны» предоставляют множество политик для перехода, включая то, что вы ищете.

APIDoc: http://logging.apache.org/log4j/extras/apidocs/index.html Домашняя страница: http://logging.apache.org/log4j/extras/

7
ответ дан JavaJigs 14 October 2019 в 14:22
поделиться

Слишком поздно, чтобы ответить. Но, надеюсь, это кому-нибудь поможет.

Добавьте зависимость log4j в свой файл pom.xml

   <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

Получите копию этой реализации FileAppender. Спасибо автору этого файла.

http://haobangshou.googlecode.com/svn/trunk/hbs/APPLICATION/server/common/src/com/hbs/common/appender/TimeSizeRollingFileAppender.java

Поместите этот файл log4j.xml в папку ресурсов

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<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} [%p] %c{1} %m%n"/>
    </layout>
</appender> 

<appender name="debug" class="com.myproject.log.TimeSizeRollingFileAppender">
    <param name="File" value="log/debug.log"/>
    <param name="MaxBackupIndex" value="300"/>
    <param name="Encoding" value="GB2312"/>
    <!--CHANGE THIS TO A LARGER SIZE EG : 20MB. USE 1MB TO TEST IF THE SETTING WORKS.-->
    <param name="MaxFileSize" value="1MB"/>
    <param name="DatePattern" value="'.'yyyy-MM-dd"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{ISO8601} %p [%c] - [%m]%n"/>
    </layout>
</appender>

<!--CHANGE name TO ROOT PACKAGE NAME OF YOUR PROJECT THAT YOU WANT TO LOG.-->
<logger name="com.myproject" additivity="false">
    <level value="debug"/>
    <appender-ref ref="consoleAppender"/>
    <appender-ref ref="debug"/>
</logger>


<logger name="org.springframework" additivity="false">
    <level value="debug"/>
    <appender-ref ref="consoleAppender"/>
    <appender-ref ref="debug"/>
</logger>

<logger name="org.hibernate" additivity="false">
    <level value="debug"/>
    <appender-ref ref="consoleAppender"/>
    <appender-ref ref="debug"/>
</logger>

<root>
    <priority value="INFO"></priority>
    <appender-ref ref="consoleAppender"/>
    <appender-ref ref="debug"/>
 </root>

Чтобы выполнить быстрый тест:

import org.apache.log4j.Logger;

public class Main {

    static public void main(String[] args) {
        Logger log = Logger.getLogger(Main.class);
        for(int i = 0; i < 10000; i ++)
            log.info("Testing log");
        }
}

Готово !!

5
ответ дан JavaJigs 14 October 2019 в 14:22
поделиться

Я знаю, что этот пост немного запоздал, но вы можете попробовать TimeAndSizeRollingAppender. Он находится в свободном доступе по лицензии Apache 2.0, его можно загрузить с www.simonsite.org.uk .

10
ответ дан 28 November 2019 в 05:24
поделиться