JavaRush /Java блог /Random UA /Підключаємо до нашого JavaRush проекту логування (slf4f т...
Дмитрий Яковенко
35 рівень
Москва

Підключаємо до нашого JavaRush проекту логування (slf4f та log4j)

Стаття з групи Random UA
Як підключити Maven до вашого JavaRush проекту можна прочитати в цій статті . Далі передбачається, що це вмієте. Якщо ми хочемо використовувати slf4j, то нам потрібна залежність:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
</dependency>
Після цього робимо:
public static void main(String[] args) throws IOException {
    Logger logger = LoggerFactory.getLogger(Solution.class);
    logger.info("hello world!");
}
І отримуємо помилку:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Що загалом логічно. slf4j - це обгортка, а довкола чого ми його обернули? Нічого? От і отримали помилку. Обернути можна навколо одного зі списку: log4j, util.logging, NOP, System.err, JCL, logback. Детальніше в оригінальній інструкції . Розглянемо з прикладу log4j і System.err: 1) Почнемо з простого, з System.err . Для цього до попередньої залежності (slf4j-api) додаємо цю (slf4j-simple).
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.30</version>
</dependency>
Версії беремо однакові, на 10 травня 2021 року це 1.7.30. Якщо будете брати залежності від https://mvnrepository.com/ не забудьте видалити
<scope>test</scope>
А інакше ваші логи працюватимуть лише у тестах. 2) Тепер спробуємо налаштувати log4j , для цього нам потрібно додати 2 залежності: сам log4j і прошарок між slf4j і log4j (slf4j-log4j12). Виглядає це так:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
Зрозуміло, що (slf4j-simple) нам потрібно видалити, щоб slf4j не плутався, з яким логером йому працювати. А (slf4j-api) залишити, оскільки це є slf4j. З приводу 2-х доданих залежностей. log4j ми додаємо старий (від травня 2012, хз чому, можете поексперементувати з іншими). Версія у нього 1.2.17. Щоб slf4j зміг з ним працювати, потрібний відповідний прошарок - slf4j-log4j12, де останні символи (12) - означають версію log4j. При цьому версія slf4j-api та slf4j-log4j12 має бути 1.7.30 – остання стабільна на поточний момент. Після того, як ви підключабо залежності та оновабо Maven проект. Для роботи log4j потрібно ще дві речі: 1) Налаштувати конфігураційний файл. Читаємо, вибираємо, копіюємо. 2) Врахувати конфігурацію log4j перед роботою:
PropertyConfigurator.configure("d:\\Java\\CodeGymTasks\\4.JavaCollections\\log4j.properties");
ну або де там у вас файл лежить. Якщо ви хочете бачити всі логи – не забудьте поставити рівень логування ALL. Дописуємо в резюме – log4j & slf4j. Ви чудові! Якщо допомогло - лайк, передплата, дзвіночок!)))
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ