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_OUT lubSYSTEM_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 ConsoleAppender
tego, ż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 FileAppender
niego 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 filePattern
okreś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
GO TO FULL VERSION