SLF4J ведение журнала в файл против DB против Solr - PullRequest
6 голосов
/ 31 января 2012

Мне нужны некоторые предложения с точки зрения ведения журнала SLF4J.

В настоящее время мы используем протоколирование SLF4J (привязка log4j) для нашего веб-приложения на Java, в котором используется простой ConsoleAppender.Наш следующий шаг - поиск мест, где мы можем сохранить логи.

Наше приложение обрабатывает около 100 000 сообщений в день.Каждое сообщение генерирует около 60 -100 строк журналов.Наша цель - иметь возможность быстро искать и находить сообщения о сбоях (используя messageId) и выявлять причины сбоя.

Мой вопрос: что из следующего является хорошим местом для хранения наших журналов:

  • Файл (ы)
  • DB
  • Solr

Спасибо.

Ответы [ 2 ]

11 голосов
/ 31 января 2012

Рассмотрите возможность перехода от log4j и использования logback реализации API slf4j. Logback имеет обширный список доступных доступных

Я думаю, что, возможно, ваши вопросы больше относятся к тому, чтобы сделать ваши журналы доступными для поиска. Ответ зависит от того, что вы ищете.

  • Для простых приложений я просто использую прокручиваемый файл appender и добавляю сюда grep для сообщений, которые меня интересуют.
  • Более сложные приложения будут дополнительно регистрировать сообщения в базе данных.
  • В настоящее время нет приложения Solr для log4j и logback. Однако, это должно быть легко написать, используя solrj API
  • Для мониторинга сообщений журнала есть lilith , который представляет собой удаленный графический интерфейс для сообщений журнала. Не знаю, насколько хорошо он масштабируется, но это, безусловно, интересно для демонстраций и простого мониторинга.

Обновление

Как предполагает Себастьен, для входа в систему существует также Graylog2 appender . Теперь доступно в Maven Central

<dependency>
    <groupId>me.moocar</groupId>
    <artifactId>logback-gelf</artifactId>
    <version>0.9.6p2</version>
</dependency>

Конечно, это будет зависеть от установленного сервера graylog2 .

0 голосов
/ 31 января 2012

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

Следовательно, наиболее надежное и долгосрочное решение - просто использовать java.util.logging (с привязкой slf4j) и позволить веб-контейнеру обрабатывать сгенерированные журналы.

У вас около 10 миллионов записей в день. Это означает, что вы должны быть осторожны с использованием ресурсов. Связь с базой данных намного дороже, чем доступ к файлам. Я бы посоветовал вам описать подходы, чтобы увидеть, сможете ли вы получить производительность, необходимую для рассмотрения чего-либо еще, кроме простых файлов, резервное копирование которых производится каждую ночь.

...