2009-09-18 17 views
16

Na przykład, po pierwszym uruchomieniu aplikacji (lub natychmiast po wyczyszczeniu katalogu/logs), chcę, aby log4j zapisał logi aplikacji do pliku o nazwie log.0. Następnie zamykam aplikację i restartuję ją, chcę, aby logi były zapisywane w log.1. I tak dalej.Czy można skonfigurować log4j, aby utworzyć nowy plik przy każdym uruchomieniu aplikacji?

Chciałbym zachować to w pliku konfiguracyjnym, chociaż jeśli nie mogę, myślę, że zawsze mogłem to zrobić w mojej aplikacji, kiedy log4j jest skonfigurowany.

Czy to możliwe? Jeśli tak to jak?

Odpowiedz

0

Z góry mojej głowy nie sądzę, że jest to możliwe z Log4j. Może po zamknięciu aplikacji możesz zmienić nazwę pliku .log, aby następnym razem, gdy uruchomiłeś nowy plik dziennika, został utworzony.

+0

Jeśli tak, to jestem nieco rozczarowany. log4j spełnia wszystkie moje potrzeby i działa dobrze. Chcę tylko móc grupować moje dzienniki według wykonania, zamiast według daty lub rozmiaru pliku. –

+0

Kiedyś napisałem dodatkowy adapter do log4j (długa historia), kod źródłowy jest naprawdę łatwy do odczytania i dobrze udokumentowany, że nie zajmie ci to dużo czasu, aby zaimplementować tę funkcję :-) – Karl

1

Zobacz logback w sprawie uniquely named files (by timestamp).

+2

Czy ta odpowiedź nie dotyczy innej struktury, a nie samej log4j? Przynajmniej nie działa z log4j dla mnie: ' log4j: WARN Błąd ciągłego parsowania 11 i kolumna 61 log4j: WARN Typ elementu" znacznik czasu "musi być zadeklarowany. log4j: WARN Kontynuowany błąd parsowania 18 i kolumna 16 log4j: WARN Zawartość typu elementu "appender" musi być zgodna "(errorHandler?, Param *, layout?, Filter *, appender-ref *)". " – Henning

3

Rozwiązanie z log4j2:

 <RollingFile name="RollingFile" fileName="${log-path}/GScraper.log" 
       filePattern="${log-path}/GScraper_%d{yyyy-MM-dd}_%i.log"> 
     <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/> 
     <PatternLayout> 
      <pattern>%level\t%d{yyyy-MM-dd HH:mm:ss} %c: %m%n</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
      <SizeBasedTriggeringPolicy size="32 MB" /> 
      <OnStartupTriggeringPolicy/> 
     </Policies> 
    </RollingFile> 

Uwaga OnStartupTriggeringPolicy i % i w filePattern. W ten sposób Log4j utworzy nowy plik dziennika z indeksem przy każdym uruchomieniu aplikacji.

Powiązane problemy