Що таке маркери в структурах журналу Java і що є причиною їх використання?


110

Перший раз, коли я читаю про маркери, читаю:

http://slf4j.org/faq.html

Я перевіряю доступні методи для об’єкта Logger :

і знайшли інтерфейси:

Більш детальну інформацію я отримую від:

але все ще плутати ... Зауважте, я запитую чому , а не як ними користуватися, тому це не дублікат:

ОНОВЛЕННЯ Здається, що при використанні маркерів вам також потрібно писати користувальницький код Java, а не робити конфігурацію у файлах XML чи .property ...

ОНОВЛЕННЯ 2 Від http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluator

Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN");
logger.error(notifyAdmin,
  "This is a serious an error requiring the admin's attention",
   new Exception("Just testing"));

Для використання маркерів потрібно використовувати API маркера, наданий SLF4J. Це ви маєте на увазі під "спеціальним кодом Java"?
Чекі

@Ceki Здається, що використання просто Logger.warn (Marker, msg) не принесло вам користі, поки ви не написали спеціальний клас для фільтрів та зареєстрували їх ... Простий синтаксис logback.xml не має спеціальних здібностей для роботи з маркером (просто роздрукувати їх % маркером )
gavenkoa

1
Що можна знайти "особливим" у тому, що представлено на сторінці logback.qos.ch/manual/appenders.html#OnMarkerEvaluator ?
Цекі

@Ceki Дякую за бал! Це лише одне місце, де можна використовувати маркери?
гавенкоа

1
@Ceki Тепер, коли ми використовуємо Elasticsearch, це спосіб відзначити особливі події. Ми зберігаємо заздалегідь задані маркери у виділеному класі для повторного використання. Це було не очевидно, коли ви просто використовуєте grepтекстові журнали.
gavenkoa

Відповіді:


117

Це перероблена версія моєї відповіді на питання " Кращі практики використання маркерів у SLF4J / Logback ".

Маркери можна використовувати для фарбування або маркування одного оператора журналу. Що ви робите з цими кольорами, тобто маркерами, повністю залежить від вас. Однак два моделі, схоже, є загальними для використання маркера.

  1. Запуск : деякого додатка можна доручити вжити заходів за наявності певного маркера. Наприклад, SMTPAppenderможе бути налаштовано для надсилання електронного листа кожного разу, коли подія реєстрації позначена NOTIFY_ADMINмаркером незалежно від рівня журналу. Див маркер на основі запуску в документації Logback. Ви також можете комбінувати рівні журналів та маркери для запуску.

  2. Фільтрація : маркери дуже корисні для виділення певних цінних виписок журналу. Наприклад, ви можете розфарбувати / позначити всі журнали, пов’язані зі стійкістю (у різних файлах і кількох класах) кольором "DB". Потім можна фільтрувати за "DB": відключити ведення журналу, за винятком виписок журналу, позначених DB. Для отримання додаткової інформації дивіться розділ про фільтри в документації для зворотного зв'язку (шукайте MarkerFilter). Зауважте, що фільтрація за маркерами може бути виконана не лише за допомогою зворотного зв'язку, але й інструментів аналізу журналів.

До появи Маркерів, щоб досягти подібної поведінки, у вас був варіант 1) за допомогою спеціальних рівнів 2) використовувати модифіковані імена реєстратора. API API SLF4J на даний момент не підтримує користувацькі рівні. Що стосується варіанту 2, то імена суффіксів (або префіксації) є зручними, якщо потрібно змінити один або два реєстратори. Підхід стає недоцільним, як тільки 3 або більше реєстраторів потрібно "підкласифікувати", оскільки пов'язані файли конфігурації стають некерованими.

Навіть незважаючи на те, що один маркер може бути вже дуже корисним, наступна версія SLF4J, тобто версія 2.0, дозволить мати кілька маркерів на протокол заяви.


1
Також може бути використаний в SiftingAppender для discrimnator stackoverflow.com/a/30552012/1012497
nikli
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.