2011-02-01 17 views
7

Widziałem wiele pytań o różnych log4j aplikatorach, ale żaden z nich nie dotyczy problemu, który mam. Przepraszam, jeśli jest to powtarzane w dowolnym miejscu.Modyfikowanie sposobu, w jaki CompositeRollingAppender zmienia nazwy plików

Używam CompositeRollingAppender w naszej aplikacji, ponieważ musimy toczyć plik dziennika na podstawie czasu i wielkości. Działa to dokładnie jak w reklamie, jednak skończyć z plików, takich jak:

myapp.log 
myapp.log.2010-12-11 
myapp.log.2010-12-11.1 
myapp.log.2010-12-12 

Czy to możliwe, aby zmienić format jak log4j zmienia nazwy plików? Jestem pewien, że musi być nieuchwytna własność gdzieś na, którą przeoczyłem. Na przykład w powyższej sytuacji chciałbym coś takiego:

myapp.log 
myapp-2010-12-11.log 
myapp-2010-12-11.1.log 
myapp-2010-12-12.log 

Chodzi o to, że rozszerzenie jest nadal .log Dlaczego pytasz? Ponieważ administratorzy naszej aplikacji skarżyli się, że nie mogą po prostu dwukrotnie kliknąć pliku, aby go otworzyć (wiem, wiem). Jeśli wszystkie mają rozszerzenie .log, nie będzie tak.

Z góry dziękuję.

+0

To kundel, ale możesz dołączyć literał '.log' w swoim wzorze daty. Oczywiście twoje pliki będą wyglądać jak "myapp.log-2010-12-11.log", ale przynajmniej można je otworzyć podwójnym kliknięciem. – biziclop

+0

Tak - mogłem zrobić, jak przypuszczam. Miałem trochę nadziei, że to po prostu modyfikacja jakiejś nieruchomości, której mi brakowało. Mógłbym oczywiście po prostu rozbudować programistę bazowego, aby zrobić to, czego potrzebuję. –

Odpowiedz

0

CompositeRollingAppender nie obsługuje funkcji chcesz. Jest dość ograniczony w sposobie określania (podczas uruchamiania), jeśli istnieje już odpowiedni plik dziennika, do którego należy się dołączyć. Obsługuje tylko datę i numer na końcu skonfigurowanej nazwy statycznej.

Możesz spróbować użyć dodatków log4j CompositeTriggeringPolicy, ale nie znam numeru RollingPolicy, który będzie zawierał zarówno datę, jak i okno.

wybór dla administratorów jest rezygnują limit rozmiaru na plikach, dzięki czemu można korzystać z RollingFileAppender z TimeBasedRollingPolicy z

<param name="FileNamePattern" value="MyApp.%d{yyyy-MM-W}.log" /> 

lub żyć z aktualnymi nazwami lub uruchomić crona aby zmienić nazwę plików, ale pamiętaj, że nie możesz zmienić nazw plików do następnego dnia (inaczej uzyskasz kolizje nazw plików).

0

myślę, że można użyć

<param name="FileNamePattern" value="C:\\logs\\MyApp.%d{yyyy-MM-dd}.log" /> 
Powiązane problemy