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_OUT oSYSTEM_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 ConsoleAppender
ng 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 FileAppender
nito, 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 filePattern
ang 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