Пишем тысячи лог файлов одновременно

  • Tutorial

Привет, Товарищи!


Что будет, если в приложении Spring Boot выставить logging.level.root=TRACE?


Все логи будут записаны в один файл, в котором будет куча-мала из классов.


В лучшем случае, с помощью sifting appender можно разделить максимум по 1 критерию ("дискриминатору") — например по имени потока или по имени класса. И даже при этом — будет существовать записимость от исходного кода, который должен поддерживать значания дискриминатора в "MDC".


Стоп, стоп, стоп! Убираем logback, добавляем Бобину — и вот такой нехитрой конфигурацией пишем в отдельные лог файлы для каждого класса и уровня логирования — да ещё и в отдельные директории:


Bobbin.yml


destinations:
  - name: io.infinite.bobbin.config.FileDestinationConfig
    fileName: ("./LOGS/INFINITE/${className}/${level}/${className}_${level}_${date}.log")

И вот что получается:



А теперь представьте, что вы просите SRE коллегу:


- Пришли мне пожалуйста лог класса org.visa.api.Transfer
- Но там же номера карт?
- Только ERROR лог
- Ок! Сейчас будет.

Конечно, концептуально всё устремляется в сторону ELK (ну или splunk или grafana). Но он не везде настроен ещё — и старые-добрые лог файлы всё ещё довольно часто актуальны.


Но мы считаем, что нужно идти от частного к общему — умея делать такие трюки как выше, Бобина даст фору любому логгеру и в облачной среде. Ведь всё упирается в гибкость и простоту настройки.


Мы записали видео, демонстрирующее этот пример полностью, и показывающий работу Бобины в динамике:



Приятного просмотра!


Требуется: Java 8 или 11, Gradle
Ссылка на демо репозиторий


Сейчас мы наблюдаем массовый наплыв новых пользователей (и во многом благодаря Хабру — спасибо Вам!). Похоже, что в 2020 Бобина станет одним из самых популярных логгеров. Уже точно ясно что она станет в один ряд с logback и log4j2. В наших ближайших планах расширение API — а именно, поддержка Google Flogger.


Если вдруг вы ещё не пробовали — добавьте её в Ваши Gradle или Maven проекты.


Перед нашими глазами рождается история — зарождение Open Source организации нового типа.
И атлант уже расправляет плечи.


Всех благ!

Комментарии 8

    0
    Зачем трейсить то?
      0

      по хорошему — и не надо конечно.

      0
      Зачем героически преодолевать препятствия когда лучше все-таки бросить силы на донастройку ELK? Другой вопрос, а зачем в продакшене трейсить, может быть лучше обратить внимание на то, что вы логгируете, а не на то, как вы логгируете? Как вы планируете объединять логи для их анализа если они распиханы по разным файлам?
      Похоже, что в 2020 Бобина станет одним из самых популярных логгеров. Уже точно ясно что она станет в один ряд с logback и log4j2. В наших ближайших планах расширение API — а именно, поддержка Google Flogger.

      Очень громкое заявление…
        0
        Как вы планируете объединять логи для их анализа если они распиханы по разным файлам?

        Можно в дополнение к этому писать ещё 1 общий лог файл.

          0
          В какой ситуации есть польза в записи логов в разные файлы?
            0

            практически в любой, когда требуется ручной разбор. Это изначально порочная практика записывать всё в одну кучу, если нет автоматического разборщика.


            Какие именно критерии — уже отдельный вопрос. Можно по потоками, можно по классам, можно по сессии пользователя.


            А можно одновременно включить несколько критериев — Бобина легко позволяет настроить любые сочетания, а её производительность обеспечит запись большого количества файлов.


            Когда есть ELK, конечно можно в 1 файл.

        0
        Ёмко и понятно. Спасибо за статью!
          0
          допустим
          NPE удобно будет локализовать… наверное…
          но как с такой организацией логов искать пресловутый Root cause?!

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое