Co oznacza próg w Log4J?

80

Mam log4jwłaściwości jak poniżej. Wszystko, co jest zalogowane, TextProcessor.logjest powyżej poziomu WARN. Nie rozumiem progu, który jest ustawiony tutaj do debugowania. Czy ktoś może wyjaśnić, co robi próg?

log4j.logger.TextProcessor=warn,TextProcessor 

log4j.appender.TextProcessor=org.apache.log4j.RollingFileAppender
log4j.appender.TextProcessor.File=C:/project/logs/TextProcessor.log
log4j.appender.TextProcessor.MaxFileSize=10MB
log4j.appender.TextProcessor.MaxBackupIndex=10
log4j.appender.TextProcessor.Threshold=debug
log4j.appender.TextProcessor.layout=org.apache.log4j.PatternLayout
log4j.appender.TextProcessor.layout.ConversionPattern=[%d] [%5p] (%F:%L) - %m%n
javanerd
źródło
1
Zobacz także Ustawienia produkcyjne dla log4j o wpływie poziomów i progu na blokowanie log4j i wydajność.
Vadzim

Odpowiedzi:

123

Masz tutaj dwie rzeczy: logger i appender. Niestety, wybrałeś tę samą nazwę dla obu, co nie wyjaśnia tego jasno.

Minimalny poziom rejestratora jest ustawiony na ostrzeżenie, co oznacza, że ​​wszystko, co logujesz za pomocą tego rejestratora, który nie ma co najmniej poziomu ostrzeżenia, zostanie zignorowane.

Gdy wiadomość zostanie zaakceptowana przez rejestrator, jest wysyłana do jednego lub kilku programów dołączających (do pliku, konsoli, serwera pocztowego itp.). Każdy z tych dołączających może określić próg. Możesz na przykład ograniczyć komunikaty w konsoli do błędów, ale zaakceptować komunikaty ostrzegawcze w pliku dziennika.

JB Nizet
źródło
dla mnie „próg” nie pasuje. Zacząłem log4j używając konfiguracji xml iw appenderach nazywa się to „poziomem” w znaczeniu progu. Myślę, że ta sama koncepcja (ograniczenie ważności dziennika) z dwoma różnymi etykietami (etykieta, próg) utrudnia zrozumienie (jeśli naprawdę dobrze to rozumiałem). Ale i tak nie jestem rodzimym użytkownikiem języka angielskiego.
Dirk Schumacher
33

Próg to drugi filtr dla komunikatów, które mają być rejestrowane

na przykład:

 log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger
 .
 .
 .
 log4j.appender.TextProcessor.Threshold=Error

jeśli program Logger jest ustawiony na poziomie DEBUG, a próg programu dołączającego jest ustawiony na błąd, wówczas w przypadku modułu dołączającego TextProcessor rejestrowane byłyby tylko komunikaty o błędach i wyższej wadze.

Użycie progu polega na tym, że możesz zdefiniować różnych appenderów z różnymi poziomami progów, np. W powyższym przykładzie możesz także włączyć InfoLogger z włączonym rejestrowaniem komunikatów poziomu informacji

 log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger
 .
 .
 .
 log4j.appender.InfoLogger.Threshold=INFO

Aby zrozumieć poziomy, poniżej znajdują się poziomy logowania w log4j:

FATAL: shows messages at a FATAL level only  
ERROR: Shows messages classified as ERROR and FATAL  
WARNING: Shows messages classified as WARNING, ERROR, and FATAL  
INFO: Shows messages classified as INFO, WARNING, ERROR, and FATAL  
DEBUG: Shows messages classified as DEBUG, INFO, WARNING, ERROR, and FATAL  
TRACE : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL
ALL : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL 
OFF : No log messages display

przejdź do adresu URL, aby uzyskać więcej informacji

Shirishkumar Bari
źródło
25

Poziomy rejestrowania są TRACE, DEBUG, INFO, WARN, ERRORi FATAL. Będziesz mógł wybrać, co ma być logowane na jakim poziomie w kodzie, w zależności od wagi. Na przykład będziesz mieć możliwość rejestrowania wejścia i wyjścia metod, ale możesz wybrać logowanie na DEBUGpoziomie. Pomoże to w debugowaniu kodu, ponieważ domyślnie zostanie on wydrukowany na konsoli (domyślna aplikacja do konsoli jest włączona). Idąc na produkcję można podnieść próg ERRORi uniemożliwić aplikacji wydrukowanie mało przydatnych szczegółów na konsoli lub plikach dziennika.

Vinod R
źródło
13

Zapewnia proste mapowanie z pliku konfiguracyjnego właściwości do przepływu komunikatów dziennika. (Ukryłem kilka linii konfiguracji, aby zminimalizować)

log4j.rootLogger=ALL, stdout
log4j.logger.com.xyz=INFO, file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=DEBUG
...

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.Threshold=WARN
...

schemat logowania z ustawień powyżej

Aby zrozumieć, co to jest, powinieneś wiedzieć, że:

  • Poziomy rejestrowania rosną podczas pobierania z lewej strony: TRACE, DEBUG, INFO, WARN, ERROR i FATAL
  • Minimalny poziom logowania, który logger akceptuje z aplikacji.
  • Minimalny poziom logowania na appender, który decyduje o tym, co będzie napisane

** Jest coś bardziej złożonego w dziedziczeniu i addytywności, ale najpierw powinieneś zacząć od podstawowych i prostych rzeczy.

Ken Block
źródło