CodeGym/Java Course/Module 3/Appenders in Log4j

Appenders in Log4j

Beschikbaar

Lijst met bijlagen

Met de logger kunt u gegevens in meerdere bestanden tegelijk opslaan. Dergelijke uitvoergegevensstromen worden appenders genoemd (van append). Er zijn nogal wat standaard appenders, dus we behandelen alleen de meest populaire:

bijlagen Beschrijving
1 Troosten Drukt gegevens af naar de console
2 bestand Voert gegevens uit naar een bestand
3 DailyRollingFile Voert gegevens uit naar een bestand, het bestand wordt cyclisch overschreven
4 Asynchroon Hiermee kunt u asynchroon gegevens naar een andere appender schrijven
5 Stopcontact Schrijft gegevens naar een specifieke socket
6 JDBC Schrijft berichten naar de database met behulp van het JDBC-protocol
7 PPV Schrijft berichten naar de database met behulp van het JPA-protocol
8 HTTP Verzendt gebeurtenissen via het HTTP-protocol naar een externe server
9 SMTP Slaat berichten op in een buffer en verzendt ze vervolgens als e-mail

Goede documentatie voor alle appenders staat op hun officiële website

En hieronder zullen we de meest populaire en eenvoudige bekijken.

ConsoleAppender

De eenvoudigste appender isConsoleApender . Zoals je misschien al geraden hebt, schrijft hij gewoon zijn berichten naar de console. Het heeft verschillende interessante parameters voor ons:

attributen
1 naam Appender naam
2 filter Hiermee kunt u bepaalde berichten filteren
3 indeling Specificeert de opmaak van berichten bij uitvoer
4 doel Specificeert waar te schrijven: SYTEM_OUTofSYSTEM_ERR

Het is heel eenvoudig om het te configureren:

<?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>

BestandAppender

De handigste apper isFileAppender . In tegenstelling tot ConsoleAppenderhij schrijft zijn berichten naar een bestand. Dat is erg handig als je applicatie ergens op de server draait. Het heeft veel parameters, omdat het moet bestanden op verschillende besturingssystemen kunnen schrijven.

Maar we zullen alleen de meest populaire bekijken.

1 naam Specificeert de naam van de appender
2 filter Hiermee kunt u bepaalde berichten filteren
3 indeling Specificeert de opmaak van berichten bij uitvoer
4 bestandsnaam Specificeert de naam van het bestand waarin berichten moeten worden geschreven
5 toevoegen Als true, dan worden de berichten toegevoegd aan het oude logbestand, als false- het logbestand wordt elke keer dat de toepassing wordt gestart opnieuw gemaakt.
6 buffer grootte Stelt de buffergrootte in bytes in
7 directFlush Als true, dan wordt elk bericht eigenlijk direct naar schijf geschreven (zonder buffer). Het logboek begint langzaam te werken, maar dit voorkomt dat u gegevens verliest wanneer het programma crasht.

U weet al hoe u goed met bestanden kunt werken, dus deze instellingen zijn niets nieuws voor u. Het configureren van zo'n logger is nog eenvoudiger dan een consolelogger:

<?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

De meest populaire appender isRollingFileAppender . In tegenstelling FileAppenderhiermee kunt u het logboek in veel kleine bestanden splitsen. Dit is erg belangrijk voor grote blokken. Bovendien kunt u regels instellen voor wat u met oude bestanden moet doen nadat er nieuwe zijn geschreven.

En deze apper heeft bijna honderd verschillende instellingen. Via de link kunt u meer over hen te weten komen .

Overweeg de meest populaire kenmerken van deze appender:

attributen
1 naam Specificeert de naam van de appender
2 filter Hiermee kunt u bepaalde berichten filteren
3 indeling Specificeert de opmaak van berichten bij uitvoer
4 bestandsnaam Specificeert de naam van het bestand waarin berichten moeten worden geschreven
5 bestandspatroon Specificeert een naamgevingspatroon voor archiefbestanden die niet meer worden geschreven
6 beleid Specificeert de voorwaarde wanneer het bestand moet worden overschreven
7 strategie Beschrijft wat te doen met oude bestanden: archiveren, geschiedenis voor hoeveel dagen te bewaren, enz.

Hier is een goed voorbeeld:

<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>

De parameter filePatternspecificeert een sjabloon voor archieven van oude logboeken. Er zijn er ook twee, wanneer geactiveerd, wordt een nieuw bestand geschreven:

  • TimeBasedTriggeringPolicy– werkt als een nieuwe dag begint (de huidige datum verandert)
  • SizeBasedTriggeringPolicy- werkt als de bestandsgrootte 250 MB bereikt
Opmerkingen
  • Populair
  • Nieuw
  • Oud
Je moet ingelogd zijn om opmerkingen te kunnen maken
Deze pagina heeft nog geen opmerkingen