Що означає поріг у Log4J?


80

У мене є log4jвластивості приблизно такі, як нижче. Все, що увійшло в систему, TextProcessor.log- це щось вище рівня WARN. Я не розумію порогового значення, яке встановлено тут для налагодження. Хтось може пояснити, що робить поріг?

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

1
Див. Також Налаштування виробництва для log4j про вплив рівнів і порогу на блокування та продуктивність log4j.
Вадзім

Відповіді:


123

Тут у вас є дві речі: лісоруб і придатчик. На жаль, ви вибрали одне і те ж ім'я для обох, що не дуже чітко це робить.

Мінімальний рівень реєстратора встановлений як попередження, що означає, що все, що ви реєструєтесь із цим реєстратором, який не має щонайменше рівня попередження, буде ігноруватися.

Як тільки повідомлення приймається реєстратором, воно надсилається одному або декільком додаткам (до файлу, на консоль, на поштовий сервер тощо). Кожен із цих додатків може визначати поріг. Наприклад, ви можете обмежити повідомлення в консолі помилками, але прийняти попереджувальні повідомлення у файлі журналу.


для мене "поріг" насправді не підходить. Я запустив log4j, використовуючи конфігурацію xml, і в додатках це називається "рівень" із значенням порогу. Я думаю, що одна і та ж концепція (обмеження серйозності журналу) з двома різними мітками (мітка, поріг) ускладнює розуміння (якщо я справді зрозумів це досі). Але я все одно не є носієм англійської мови.
Дірк Шумахер

33

Поріг - це другий фільтр для реєстрації повідомлень

наприклад:

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

якщо Logger встановлений на рівні DEBUG, а поріг додатка встановлений на Error, то з додатком TextProcessor будуть реєструватися лише повідомлення про помилки та більш серйозні.

Використання Threshold полягає в тому, що ви можете визначити різний додаток з різними рівнями порогових значень, наприклад, у згаданому вище прикладі ви також можете мати InfoLogger з увімкненим журналом повідомлень на інформаційному рівні

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

Щоб зрозуміти рівні, є нижче рівні реєстрації в 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

перейдіть за адресою URL, щоб дізнатися більше


25

Рівні лісозаготівель є TRACE, DEBUG, INFO, WARN, ERRORі FATAL. Ви зможете вибрати, що реєструвати на якому рівні коду, залежно від тяжкості. Наприклад, ви матимете можливість реєструвати вхід і вихід методів, але можете вибрати реєстрацію на DEBUGрівні. Це допоможе вам налагодити код, оскільки за замовчуванням він буде роздрукований на консолі (додаток консолі за замовчуванням увімкнено). Під час переходу на виробництво ви можете збільшити поріг ERRORі запобігти друку програми не надто корисних деталей на консолі або файлах журналів.


13

Дайте вам просте зіставлення з конфігураційного файлу властивостей у потік повідомлень журналу. (Я приховав кілька рядків конфігурації, щоб звести до мінімуму)

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
...

Схема реєстрації з налаштувань вище

Щоб зрозуміти, що це таке, ви повинні знати, що:

  • Рівні реєстрації збільшуються при отриманні вліво: TRACE, DEBUG, INFO, WARN, ERROR і FATAL
  • Запис мінімального рівня, який реєстратор приймає від програми.
  • Мінімальний рівень реєстрації в додатку, який вирішує, що буде записано

** Є щось складніше щодо успадкування та адитивності, але спочатку слід почати з базових та простих речей.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.