CodeGym/Kursus Java/Modul 3/Lampiran dalam Log4j

Lampiran dalam Log4j

Tahap, pelajaran
Tersedia

Senarai lampiran

Logger membolehkan anda menyimpan data ke beberapa fail sekaligus. Aliran data keluaran sedemikian dipanggil appenders (dari append). Terdapat beberapa pelengkap standard, jadi kami hanya akan merangkumi yang paling popular:

Penambah Penerangan
1 Konsol Mencetak data ke konsol
2 Fail Mengeluarkan data ke fail
3 DailyRollingFile Mengeluarkan data ke fail, fail ditimpa secara kitaran
4 tak segerak Membolehkan anda menulis data ke penambah lain secara tidak segerak
5 soket Menulis data ke soket tertentu
6 JDBC Menulis mesej ke pangkalan data menggunakan protokol JDBC
7 JPA Menulis mesej ke pangkalan data menggunakan protokol JPA
8 HTTP Menghantar acara melalui protokol HTTP ke pelayan jauh
9 SMTP Menyimpan mesej dalam penimbal, dan kemudian menghantarnya sebagai e-mel

Dokumentasi yang baik untuk semua pelengkap ada di laman web rasmi mereka

Dan di bawah ini kita akan mempertimbangkan yang paling popular dan mudah daripada mereka.

ConsoleAppender

Penambah yang paling mudah ialahConsoleApender . Seperti yang anda duga, dia hanya menulis mesejnya ke konsol. Ia mempunyai beberapa parameter yang menarik untuk kami:

Atribut
1 nama Nama lampiran
2 penapis Membolehkan anda menapis beberapa mesej
3 susun atur Menentukan pemformatan mesej apabila output
4 sasaran Menentukan tempat untuk menulis: SYTEM_OUTatauSYSTEM_ERR

Ia sangat mudah untuk mengkonfigurasinya:

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

Penambah yang paling berguna ialahFileAppender . Tidak seperti ConsoleAppenderdia menulis mesejnya ke fail. Yang sangat berguna apabila aplikasi anda berjalan di suatu tempat pada pelayan. Ia mempunyai banyak parameter, kerana ia mesti boleh menulis fail pada sistem pengendalian yang berbeza.

Tetapi kami akan mempertimbangkan hanya yang paling popular daripada mereka.

1 nama Nyatakan nama pelampir
2 penapis Membolehkan anda menapis beberapa mesej
3 susun atur Menentukan pemformatan mesej apabila output
4 nama fail Menentukan nama fail tempat menulis mesej
5 tambahkan Jika true, maka mesej akan ditambahkan pada log lama, jika false- fail log akan dicipta semula setiap kali aplikasi dimulakan.
6 Saiz penimbal Menetapkan saiz penimbal dalam bait
7 segeraFlush Jika true, maka setiap mesej sebenarnya ditulis ke cakera serta-merta (tanpa penimbal). Log mula berfungsi dengan perlahan, tetapi ini menyelamatkan anda daripada kehilangan data apabila program ranap.

Anda sudah tahu cara berfungsi dengan baik dengan fail, jadi tetapan ini bukanlah perkara baharu kepada anda. Mengkonfigurasi logger sedemikian adalah lebih mudah daripada logger konsol:

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

Penambah yang paling popular ialahRollingFileAppender . Tidak seperti FileAppenderitu, ia membolehkan anda membahagikan log kepada banyak fail kecil. Ini sangat penting untuk log besar. Di samping itu, ia membolehkan anda menetapkan peraturan untuk perkara yang perlu dilakukan dengan fail lama selepas yang baharu mula ditulis.

Dan appender ini mempunyai hampir seratus tetapan yang berbeza. Anda boleh mengetahui lebih lanjut tentang mereka di pautan .

Pertimbangkan atribut yang paling popular bagi penambah ini:

Atribut
1 nama Nyatakan nama pelampir
2 penapis Membolehkan anda menapis beberapa mesej
3 susun atur Menentukan pemformatan mesej apabila output
4 nama fail Menentukan nama fail tempat menulis mesej
5 failCorak Menentukan corak penamaan untuk fail arkib yang tidak lagi ditulis
6 dasar Menentukan keadaan apabila fail harus mula ditulis ganti
7 strategi Menerangkan perkara yang perlu dilakukan dengan fail lama: arkib, sejarah untuk berapa hari disimpan, dsb.

Berikut adalah contoh yang baik:

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

Parameter filePatternmenentukan templat untuk arkib log lama. Terdapat juga dua, apabila dicetuskan, fail baharu akan ditulis:

  • TimeBasedTriggeringPolicy– akan berfungsi jika hari baharu bermula (tarikh semasa berubah)
  • SizeBasedTriggeringPolicy– akan berfungsi jika saiz fail mencapai 250MB
Komen
  • Popular
  • Baru
  • Tua
Anda mesti log masuk untuk meninggalkan ulasan
Halaman ini tidak mempunyai sebarang ulasan lagi