2012-01-30 35 views
6

Potrzebuję sugestii w zakresie rejestrowania SLF4J.Logowanie do pliku SLF4J vs. DB vs. Solr

Obecnie używamy rejestrowania SLF4J (wiązanie log4j) dla naszej aplikacji internetowej Java, która korzysta z prostego narzędzia ConsoleAppender. Naszym następnym krokiem jest zbadanie miejsc, w których możemy zapisać dzienniki.

Nasza aplikacja przetwarza około 100 000 wiadomości dziennie. Każda wiadomość generuje około 60 -100 linii dzienników. Naszym celem jest umożliwienie szybkiego wyszukiwania i znajdowania nieudanych komunikatów (za pomocą messageId) oraz identyfikowania przyczyn awarii.

Moje pytanie brzmi: które z poniższych stwierdzeń jest dobrym miejscem do przechowywania naszych dzienniki:

  • File (s)
  • DB
  • Solr

Dzięki.

Odpowiedz

11

Rozważ wyłączenie log4j i użycie implementacji interfejsu API slf4j . Dostępna jest obszerna lista appenders.

Myślę, że być może twoje pytania dotyczą przeszukiwania logów. Odpowiedź zależy od tego, czego szukasz.

  • Do prostych zastosowań wystarczy użyć wałka do plików appender i grep to do wiadomości, że jestem zainteresowany.
  • Bardziej skomplikowane aplikacje będą dodatkowo komunikaty dziennika do bazy danych.
  • Obecnie nie ma dostępnego aplikatora Solr dla log4j i logback. Powinno być jednak łatwe pisanie przy użyciu interfejsu solrj API
  • Do monitorowania komunikatów dziennika jest zdalny interfejs GUI dla komunikatów dziennika. Nie wiem, jak dobrze się skaluje, ale z pewnością jest interesująca w przypadku demonstracji i prostego monitorowania.

Aktualizacja

Jak sugeruje Sebastien istnieje również Graylog2 appender dla logback. Teraz dostępny w Maven Central

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

Oczywiście będzie to zależało od posiadania serwera graylog2 zainstalowany.

+1

Jest też Graylog, ale nie sądzę, że skaluje się bardzo dobrze. –

+0

Nasze wyszukiwanie będzie proste: messageId + "niektóre wyszukiwane hasło". Zbadam opcję logback + DB. – scabbage

0

W specyfikacji serwletu nie ma obiektu udostępniającego lokalizację systemu plików do umieszczania dzienników.

Dlatego najbardziej niezawodnym, długoterminowym rozwiązaniem jest po prostu użycie java.util.logging (z powiązaniem slf4j) i pozwolić kontenrowi sieciowemu na obsługę wygenerowanych dzienników.

Masz około 10 milionów wpisów dziennika pr dzień. Oznacza to, że musisz zachować ostrożność przy korzystaniu z zasobów. Komunikacja z bazą danych jest znacznie droższa niż dostęp do plików. Sugerowałbym profilowanie podejść, aby sprawdzić, czy możesz uzyskać wydajność, której potrzebujesz, aby rozważyć cokolwiek innego niż płaskie pliki, które są archiwizowane co noc.

Powiązane problemy