Lista dołączających

Logger umożliwia zapisywanie danych do kilku plików jednocześnie. Takie wyjściowe strumienie danych nazywane są appenderami (od append). Istnieje sporo standardowych programów dołączających, więc omówimy tylko te najpopularniejsze:

dołączacze Opis
1 Konsola Drukuje dane do konsoli
2 Plik Wyprowadza dane do pliku
3 DailyRollingFile Wysyła dane do pliku, plik jest cyklicznie nadpisywany
4 asynchroniczny Umożliwia asynchroniczne zapisywanie danych do innego programu dołączającego
5 Gniazdo elektryczne Zapisuje dane do określonego gniazda
6 JDBC Zapisuje komunikaty do bazy danych przy użyciu protokołu JDBC
7 WZP Zapisuje komunikaty do bazy danych przy użyciu protokołu JPA
8 http Wysyła zdarzenia za pośrednictwem protokołu HTTP do zdalnego serwera
9 SMTP Przechowuje wiadomości w buforze, a następnie wysyła je jako e-mail

Dobra dokumentacja dla wszystkich osób dołączających znajduje się na ich oficjalnej stronie internetowej

A poniżej rozważymy najpopularniejsze i najprostsze z nich.

ConsoleAppender

Najprostszym appenderem jestConsoleApender . Jak można się domyślić, po prostu zapisuje swoje wiadomości do konsoli. Ma dla nas kilka interesujących parametrów:

Atrybuty
1 nazwa Nazwa dołączającego
2 filtr Umożliwia filtrowanie niektórych wiadomości
3 układ Określa formatowanie komunikatów podczas wyprowadzania
4 cel Określa, gdzie wpisać: SYTEM_OUTlubSYSTEM_ERR

Konfiguracja jest bardzo łatwa:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout pattern="%m%n"/>
        </Console>
    </Appenders>
      <Loggers>
        <Root level="error">
        <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
    </Configuration>

FileAppender

Najbardziej użytecznym appenderem jestFileAppender . W przeciwieństwie do ConsoleAppendertego, że zapisuje swoje wiadomości do pliku. Co jest bardzo przydatne, gdy Twoja aplikacja działa gdzieś na serwerze. Ma wiele parametrów, ponieważ musi być w stanie zapisywać pliki w różnych systemach operacyjnych.

Ale rozważymy tylko najpopularniejsze z nich.

1 nazwa Określa nazwę dołączającego
2 filtr Umożliwia filtrowanie niektórych wiadomości
3 układ Określa formatowanie komunikatów podczas wyprowadzania
4 Nazwa pliku Określa nazwę pliku, w którym mają być zapisywane komunikaty
5 dodać Jeśli true, to komunikaty będą dodawane do starego dziennika, jeśli false- plik dziennika będzie odtwarzany przy każdym uruchomieniu aplikacji.
6 Rozmiar bufora Ustawia rozmiar bufora w bajtach
7 natychmiastowePłukanie Jeśli true, to każda wiadomość jest faktycznie zapisywana na dysku natychmiast (bez bufora). Dziennik zaczyna działać powoli, ale chroni to przed utratą danych w przypadku awarii programu.

Wiesz już, jak dobrze pracować z plikami, więc te ustawienia nie są dla Ciebie nowością. Konfiguracja takiego rejestratora jest jeszcze prostsza niż w przypadku rejestratora konsoli:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <File name="MyFile" fileName="logs/app.log">
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
        </PatternLayout>
        </File>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="MyFile"/>
        </Root>
    </Loggers>
    </Configuration>

RollingFileAppender

Najpopularniejszym appenderem jestRollingFileAppender . W przeciwieństwie do FileAppenderniego umożliwia podzielenie dziennika na wiele małych plików. Jest to bardzo ważne w przypadku dużych kłód. Ponadto umożliwia ustawienie zasad postępowania ze starymi plikami po rozpoczęciu pisania nowych.

A ten appender ma prawie sto różnych ustawień. Więcej informacji na ich temat można znaleźć pod linkiem .

Rozważ najpopularniejsze atrybuty tego appendera:

Atrybuty
1 nazwa Określa nazwę dołączającego
2 filtr Umożliwia filtrowanie niektórych wiadomości
3 układ Określa formatowanie komunikatów podczas wyprowadzania
4 Nazwa pliku Określa nazwę pliku, w którym mają być zapisywane komunikaty
5 plikWzór Określa wzorzec nazewnictwa dla plików archiwów, które nie są już zapisywane
6 polityka Określa warunek, kiedy plik powinien zacząć być zastępowany
7 strategia Opisuje, co zrobić ze starymi plikami: archiwum, historię przez ile dni przechowywać itp.

Oto dobry przykład:


<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
    <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
    </PatternLayout>
    <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
    </Policies>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
    <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

Parametr filePatternokreśla szablon dla archiwów starych logów. Istnieją również dwa, po uruchomieniu zostanie zapisany nowy plik:

  • TimeBasedTriggeringPolicy– zadziała, jeśli zacznie się nowy dzień (aktualna data się zmieni)
  • SizeBasedTriggeringPolicy– zadziała, jeśli rozmiar pliku osiągnie 250 MB