Artur G.

Artur G. Manager / Management
3.0 enthusiast

Temat: Konfiguracja loggera w JAVA - pomocy!

Witam,

Mam taki mały problem: mam napisaną aplikację w JAVA spakowaną do wykonywalnego jar'a (nazwijmy ją aplikacja.jar), która to aplikacje loguje sobie swoje logi do pliku ./logs/aplikacja.log
Logowanie realizowane jest za pomocą java.util.logging.

Generalnie zaszła potrzeba konfigurowania sobie logowania przez użytkownika (np. rotacji logów), trzeba więc zmienić aktualną konfiguracje loggera na konfigurację podaną przez użytkownika.

Znalazłem na sieci informację, że trzeba w tym celu stworzyć sobie swój plik z properties'ami (nazwijmy go log.properties), a następnie wywołać JAVĘ z opcją: -Djava.util.logging.config.file=/path/to/app.properties

Zrobiłem tak, ale coś mi nie działa. :-(

Aplikację wywołuję w następujący sposób:

java -Djava.util.logging.config.file=log.properties -jar aplikacja.jar

log.properties znajduje się w katalogu bieżącym i wygląda następująco:

# File Logging
java.util.logging.FileHandler.pattern=/logs/myApp.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level=ALL
java.util.logging.FileHandler.limit=50
java.util.logging.FileHandler.count=100

# Console Logging
java.util.logging.ConsoleHandler.level = OFF

Niestety aplikacja w ogóle nie reaguje na nowe ustawienia handlera. Nazwa pliku z logowaniem się nie zmienia. Nie ma też rotacji logów.

Co ciekawe: plik log.properties na pewno jest zaczytywany prawidłowo, gdyż jeśli na przykład wpiszę tam głupoty, to java zauważa że coś jest nie tak. Kiedy na przykład zmieniłem linijkę:
java.util.logging.FileHandler.level=ALL
na linijkę:
java.util.logging.FileHandler.level=AL
to od razu wyskoczył na konsoli komunikat:
Bad level value for property: java.util.logging.FileHandler.level

Czyli JAVA czyta sobie parametry z tego pliku ale z jakichś tam względów ich nie stosuje.

Czy ktoś może wie o co może chodzić i gdzie popełniam błąd?
Z góry dziękuję za pomoc!
Pozdrawiam,
Artur

konto usunięte

Temat: Konfiguracja loggera w JAVA - pomocy!

A czy tam na poczatku nie powinno byc

handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level = ALL
Artur G.

Artur G. Manager / Management
3.0 enthusiast

Temat: Konfiguracja loggera w JAVA - pomocy!

Dzięki!
Faktycznie o tym drobiazgu zapomniałem, a bez tego nie miało prawo działać :)

P.S. Samo dodanie tych linijek nie pomogło, jednak już sam potem doszedłem, że powinienem jeszcze zmienić linijkę :
/logs/myApp.log
na
./logs/myApp.log

Teraz jest już dużo lepiej. Chociaż jeszcze nie idealnie.
To znaczy: zapisywanie do pliku myApp.log działa i logi się rotują. Ale jest jeszcze mały problem.
Moja koncepcja była taka, że to co zaczytuję z pliku properties ma mi nadpisać ustawienia loggera z pliku jar. Plik ten zapisywał nierotujące się logi do: ./logs/aplikacja.log
Aktualnie (po dodaniu informacji propertiesa) mam podwójne logi. Logowanie następuje zarówno do myApp.log jak i do aplikacja.log.

Ktoś ma pomysł jak wyłączyć tego aplikacja.log?

Z góry dzięki!Artur G. edytował(a) ten post dnia 19.01.12 o godzinie 16:46



Wyślij zaproszenie do