Listahan ng mga appenders

Pinapayagan ka ng logger na mag-save ng data sa ilang mga file nang sabay-sabay. Ang ganitong mga stream ng output ng data ay tinatawag na mga appenders (mula sa append). Mayroong ilang mga karaniwang appenders, kaya tatalakayin lang namin ang mga pinakasikat:

Mga Append Paglalarawan
1 Console Nagpi-print ng data sa console
2 file Naglalabas ng data sa isang file
3 DailyRollingFile Naglalabas ng data sa isang file, ang file ay cyclically overwritten
4 Async Binibigyang-daan kang magsulat ng data sa isa pang appender nang asynchronous
5 Socket Nagsusulat ng data sa isang partikular na socket
6 JDBC Nagsusulat ng mga mensahe sa database gamit ang JDBC protocol
7 JPA Nagsusulat ng mga mensahe sa database gamit ang JPA protocol
8 http Nagpapadala ng mga kaganapan sa pamamagitan ng HTTP protocol sa isang malayuang server
9 SMTP Nag-iimbak ng mga mensahe sa isang buffer, at pagkatapos ay ipapadala ang mga ito bilang isang email

Ang magandang dokumentasyon para sa lahat ng mga appenders ay nasa kanilang opisyal na website

At sa ibaba ay isasaalang-alang natin ang pinakasikat at simple sa kanila.

ConsoleAppender

Ang pinakasimpleng appender ayConsoleApender . Gaya ng nahulaan mo, isinusulat lang niya ang kanyang mga mensahe sa console. Mayroon itong ilang kawili-wiling mga parameter para sa amin:

Mga Katangian
1 pangalan Pangalan ng appender
2 salain Binibigyang-daan kang mag-filter ng ilang mensahe
3 layout Tinutukoy ang pag-format ng mga mensahe kapag nag-output
4 target Tinutukoy kung saan isusulat: SYTEM_OUToSYSTEM_ERR

Napakadaling i-configure ito:


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

Ang pinakakapaki-pakinabang na appender ayFileAppender . Hindi tulad ConsoleAppenderng pagsusulat niya ng kanyang mga mensahe sa isang file. Na lubhang kapaki-pakinabang kapag ang iyong application ay tumatakbo sa isang lugar sa server. Ito ay may maraming mga parameter, dahil dapat itong makapagsulat ng mga file sa iba't ibang mga operating system.

Ngunit isasaalang-alang lamang natin ang pinakasikat sa kanila.

1 pangalan Tinutukoy ang pangalan ng appender
2 salain Binibigyang-daan kang mag-filter ng ilang mensahe
3 layout Tinutukoy ang pag-format ng mga mensahe kapag nag-output
4 fileName Tinutukoy ang pangalan ng file kung saan magsusulat ng mga mensahe
5 dugtungan Kung true, kung gayon ang mga mensahe ay idaragdag sa lumang log, kung false- ang log file ay muling gagawin sa tuwing magsisimula ang application.
6 bufferSize Itinatakda ang laki ng buffer sa bytes
7 immediateFlush Kung true, ang bawat mensahe ay aktwal na nakasulat sa disk kaagad (nang walang buffer). Ang log ay nagsimulang gumana nang mabagal, ngunit ito ay nagliligtas sa iyo mula sa pagkawala ng data kapag nag-crash ang program.

Alam mo na kung paano gumana nang maayos sa mga file, kaya hindi na bago sa iyo ang mga setting na ito. Ang pag-configure ng naturang logger ay mas madali kaysa sa isang console logger:


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

Ang pinakasikat na appender ayRollingFileAppender . Hindi tulad FileAppendernito, pinapayagan ka nitong hatiin ang log sa maraming maliliit na file. Ito ay napakahalaga para sa malalaking log. Bilang karagdagan, pinapayagan ka nitong magtakda ng mga panuntunan para sa kung ano ang gagawin sa mga lumang file pagkatapos magsimulang magsulat ng mga bago.

At ang appender na ito ay may halos isang daang iba't ibang mga setting. Maaari mong malaman ang higit pa tungkol sa kanila sa link .

Isaalang-alang ang pinakasikat na katangian ng appender na ito:

Mga Katangian
1 pangalan Tinutukoy ang pangalan ng appender
2 salain Binibigyang-daan kang mag-filter ng ilang mensahe
3 layout Tinutukoy ang pag-format ng mga mensahe kapag nag-output
4 fileName Tinutukoy ang pangalan ng file kung saan magsusulat ng mga mensahe
5 filePattern Tumutukoy ng pattern ng pagbibigay ng pangalan para sa mga archive na file na hindi na nakasulat
6 patakaran Tinutukoy ang kundisyon kung kailan dapat magsimulang ma-overwrite ang file
7 diskarte Inilalarawan kung ano ang gagawin sa mga lumang file: archive, kasaysayan para sa kung ilang araw upang panatilihin, atbp.

Narito ang isang magandang halimbawa:


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

Tinutukoy ng parameter filePatternang isang template para sa mga archive ng mga lumang log. Mayroon ding dalawa, kapag na-trigger, isang bagong file ang isusulat:

  • TimeBasedTriggeringPolicy– gagana kung magsisimula ang isang bagong araw (nagbabago ang kasalukuyang petsa)
  • SizeBasedTriggeringPolicy- gagana kung ang laki ng file ay umabot sa 250MB