Різниця між logger.info та logger.debug


Відповіді:


30

Це буде залежати від конфігурації ведення журналу. Значення за замовчуванням буде залежати від використовуваного фреймворку. Ідея полягає в тому, що згодом, змінивши параметри конфігурації з INFO на DEBUG, ви побачите тонну більше (або менше, якщо навпаки) рядків, надрукованих без перекомпіляції всієї програми.

Якщо ви думаєте, який із них використовувати, то це зводиться до того, щоб думати, що ви хочете побачити на якому рівні. Для інших рівнів, наприклад у Log4J, перегляньте API, http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html


121

Пропоную подивитися статтю під назвою "Короткий вступ до log4j" . Він містить коротке пояснення рівнів журналів та демонструє, як їх можна використовувати на практиці. Основна ідея рівнів журналів полягає в тому, що ви хочете мати можливість налаштувати, наскільки детально журнали містяться, залежно від ситуації. Наприклад, якщо ви намагаєтеся вирішити проблему, ви хотіли б, щоб журнали були дуже детальними. На виробництві ви можете бачити лише попередження та помилки.

Рівень журналу для кожного компонента вашої системи зазвичай контролюється за допомогою параметра у файлі конфігурації, тому його легко змінити. Ваш код містив би різні оператори реєстрації на різних рівнях. Відповідаючи на Exception, ви можете зателефонувати Logger.error. Якщо ви хочете надрукувати значення змінної в будь-якій заданій точці, ви можете зателефонувати Logger.debug. Ця комбінація налаштованого рівня ведення журналу та операторів ведення журналу у вашій програмі дозволяє вам повністю контролювати, як ваша програма реєструватиме свою діяльність.

У випадку log4j, принаймні, упорядкування рівнів журналу є:

DEBUG < INFO < WARN < ERROR < FATAL

Ось короткий приклад із цієї статті, який демонструє, як працюють рівні журналів.

   // get a logger instance named "com.foo"
   Logger logger = Logger.getLogger("com.foo");

   // Now set its level. Normally you do not need to set the
   // level of a logger programmatically. This is usually done
   // in configuration files.
   logger.setLevel(Level.INFO);

   Logger barlogger = Logger.getLogger("com.foo.Bar");

   // This request is enabled, because WARN >= INFO.
   logger.warn("Low fuel level.");

   // This request is disabled, because DEBUG < INFO.
   logger.debug("Starting search for nearest gas station.");

   // The logger instance barlogger, named "com.foo.Bar",
   // will inherit its level from the logger named
   // "com.foo" Thus, the following request is enabled
   // because INFO >= INFO.
   barlogger.info("Located nearest gas station.");

   // This request is disabled, because DEBUG < INFO.
   barlogger.debug("Exiting gas station search");

@momomo, ви можете перевірити цю відповідь, щоб дізнатись, що таке Traceрівень журналу.
RBT

Ваш приклад If you want to print the value of a variable at any given point, you might call Logger.debugдопоміг мені прояснити плутанину, яку я мав між Debugі Traceрівнем. Дякую!
RBT

13

Просто роз'яснення щодо набору всіх можливих рівнів, а саме:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

9

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

Сенс мати різні пріоритети полягає у тому, щоб дозволити вам збільшити / знизити рівень деталізації певного компонента досить тонко детально - і лише потрібно змінити конфігурацію журналювання (а не код), щоб побачити різницю.


2

Це дуже давнє запитання, але я не бачу тут свого розуміння, тому додам свої 2 центи:

Кожен рівень відповідає / відображається типу користувача:

  • налагодження: розробник - налагодження вручну
  • трасування: автоматизована реєстрація та трасування кроків - для підтримки третього рівня
  • інформація: технік / рівень підтримки 1/2
  • попередження: помилка техніка / користувача: автоматичне попередження / підтримка рівня 1
  • критичний / смертельний: залежить від вашого налаштування - локальний ІТ

2
  1. INFO використовується для реєстрації інформації, що працює у вашій програмі, як очікувалося.
  2. DEBUG використовується для пошуку причини, якщо ваша програма працює не так, як очікувалося, або сталося виняток. це в інтересах розробника.

0

У чому різниця між logger.debug та logger.info?

Це лише деякі вже визначені рівні за замовчуванням. Ви можете визначити власні рівні, якщо хочете. Мета цих рівнів - увімкнути / вимкнути один або кілька з них, не вносячи жодних змін у ваш код.

Коли буде надруковано logger.debug ??

Коли ви увімкнули налагодження або будь-який більш високий рівень у вашій конфігурації.


0

Це залежить від того, який рівень ви вибрали у своєму файлі конфігурації log4j.

<Loggers>
        <Root level="info">
        ...

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

Залежно від рівня критичності вашого коду, ви повинні використовувати найбільш точний рівень серед таких:

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