2011-04-15 17 views
28

Próbuję użyć slf4j + java.util.logging. Wiem, jak skonfigurować kod źródłowy Java, aby to zrobić poprzez logger = LoggerFactory.getLogger(...) i logger.warn('...') lub cokolwiek innego.slf4j + java.util.logging: jak skonfigurować?

Ale gdzie jest dokumentacja do konfiguracji konfiguracji w slf4j? Jestem bardzo zdezorientowany ... Mam podręcznik log4j i jestem zaznajomiony z podstawami rejestrowania adapterów, ale nie jestem pewien, jak to zrobić, aby działało z slf4j + java.util.logging.

mianowicie:

  • który .Properties plik i/lub JVM -D wiersza poleceń argumentu muszę podać, aby skierować go w moim pliku konfiguracyjnego?

  • gdzie jest dokumentacja pliku konfiguracyjnego dla java.util.logging?

  • czy użycie slf4j powoduje jakąkolwiek zmianę w moim pliku konfiguracyjnym? (To jest coś, co mam zadeklarować w inny sposób, w porównaniu z tylko za pomocą java.util.logging lub log4j bezpośrednio)

+1

Nie znalazłeś te na stronie internetowej dokumentacji SL4J? http://www.slf4j.org/docs.html –

+5

nie, jest bardzo krótki. –

+0

Nie dostaję tego, co chcesz osiągnąć, czy chcesz użyć rejestratora slf4j w kodzie i java.logging do wyprowadzenia logowania lub w inny sposób? – moritz

Odpowiedz

13

Zobacz this tutorial on jul:

java -Djava.util.logging.config.file = myLoggingConfigFilePath

Ale polecam iść do Logback

+2

Istnieje jedna wyraźna zaleta korzystania z j.u.l, a mianowicie, że jest łatwy w użyciu między modułami ładującymi klasy. Używamy go do propagowania komunikatów logujących z aplikacji sieciowej (WAR) do dzienników kontenerów serwletu. –

11

nie ma konfiguracji w warstwie SLF4J. To tylko API, które backend musi zapewnić implementację (mniej więcej).

Aby użyć java.util.logging jako backend slf4j, musisz mieć slf4j-jdk14-mumle.jar z dystrybucji slf4j na ścieżce klas i zrobić magię wymienioną w javadoc, aby ją włączyć. Jeśli nie, pojawi się błąd środowiska wykonawczego, mówiąc, że nie ma aktywnej implementacji slf4j.

+0

"witryna slf4j jest teraz wyłączona, więc nie mogę sprawdzić strony podręcznika lub FAQ)" - dokładnie. Mam slf4j-api - *. Jar i slf4j-jdk14 - *. Jar w mojej ścieżce klas, po prostu nie wiem, jak "zrobić magię wymienioną w javadoc", aby przekonwertować ją do pliku zamiast stdout. –

+1

Po wyświetleniu komunikatów dziennika na konsoli oznacza to, że system rejestrowania działa poprawnie. Następnie należy go skonfigurować _COMPLETNIE, JAK CHCESZ INACZEJ_, aby cokolwiek działało inaczej. To znaczy. dla rejestrowania jdk musisz wykonać dokładnie tę samą pracę z właściwościami, a dla log4j musisz dostarczyć plik log4j.xml informujący, co zrobić. –

+0

OK, to domyślam się, że moje pytanie staje się, gdzie są dokumenty na temat konfiguracji rejestrowania jdk14. –

2

Nie konfiguruj SLF4J - musisz powiązać i skonfigurować dostawcę. Używam Logback, który został zbudowany specjalnie dla SLF4J. Możesz również użyć log4j. Zobacz odpowiedni wpis w instrukcji: http://www.slf4j.org/manual.html#binding

+4

... i oczywiście, aby odpowiedzieć na oryginalne pytanie_ (dlaczego wszyscy głosują na brak odpowiedzi?): można oczywiście użyć 'java.util.logging' jako implementacji logowania przez umieszczenie' slf4j-jdk14- {slf4j-version} .jar' w ścieżce klas zamiast w innych 'slf4j- {binding} .jar'; następnie ustaw j.u.l. config za pomocą właściwości '-Djava.util.logging.config.file'. (Chciałbym, ale nie chcę, bo ja też wolę logback :-). Ale ja też lubię _answers_.) – michael

3

Usunąłem logowanie Java w tym samym celu i przeszedłem do logback. Nie ma nic do zrobienia, aby skonfigurować logback z SLF4J w rzeczywistości. Wystarczy umieścić plik logback.xml w katalogu głównym słoika z konfiguracją logowania i umieścić logback-XX.jar na ścieżce klas.

<configuration> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- encoders are assigned the type 
     ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <root level="warn"> 
    <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 

To jest konfiguracja do logowania do konsoli, ale instrukcja z odzyskiwaniem ma więcej przykładów.

+3

Chociaż zgadzam się, to nie odpowiada na pytanie. Aby uzasadnić wzrost głosów, dodaj coś takiego: podobne do logback za pomocą 'java -Dlogback.configurationFile =/path/to/config.xml', j.u.l. może używać: 'java -Djava.util.logging.config.file = myLoggingConfig' w/albo [plik właściwości] (http://stackoverflow.com/questions/805701/load-java-util-logging-config-file -for-default-initialization) lub [class] (http://docs.oracle.com/javase/1.4.2/docs/api/java/util/logging/LogManager.html). Logback domyślnie używa 'logback.xml' ze ścieżki klasy; j.u.l używa 'logging.properties' z katalogu instalacyjnego Java. – michael

-2

Czasami wydaje się, można uzyskać edytuj plik tak, jak to

(standardowy plik log4j config)

+0

Czy określasz ścieżkę do użycia? Jeśli tak, to czy możesz wyjaśnić, dlaczego działa i w której wersji tomcat? – Andreas

+0

@Andreas, gdziekolwiek znajduje się twój folder webapps. To było z tomcat 6 Wierzę, ale myślę, że to nie ma znaczenia, ponieważ jest to bardziej sprawa log4j. Twoje zdrowie! – rogerdpack

+0

Downvoters proszę zostawić powód, dzięki! – rogerdpack

2

Zasadniczo, po prostu trzeba mieć slf4j-api.1.7.7.jar i slf4j-jdk14.1.7.7.jar na ścieżce klas. Następnie utwórz plik logging.properties dla aplikacji i ustaw właściwości systemu -Djava.util.logging.config.file = {path_to_logging.Właściwości}

wyboru this tutorial się, która daje przykłady, jak skonfigurować slf4j z różnych ram rejestrowania takich jak java logger, log4j, logback itp

Powiązane problemy