Ketika program latar belakang dikembangkan dan diluncurkan, pencetakan informasi log dan perekaman log umumnya digunakan. Selama pengembangan, pencetakan informasi log dapat dengan cepat menemukan masalah dan membantu kami berkembang dengan cepat. Jika bug atau kesalahan terjadi setelah program online, catatan log diperlukan untuk menemukan masalah.
Spring Boot dapat mengintegrasikan banyak sistem logging yang berbeda, di antaranya Apache Log4j yang paling umum digunakan, dan Log4j 2 adalah versi yang ditingkatkan dari Log4J, yang telah membuat banyak peningkatan signifikan dibandingkan dengan Log4J 1.x. Jadi blog ini akan secara langsung berbicara tentang bagaimana Spring Boot mengintegrasikan dan mengkonfigurasi log4J2.
1. Impor Paket Log4J2
Jika Anda menggunakan Gradle, tambahkan dependensi berikut dalam file build.gradle. Metode Gradle digunakan dalam kode sampel.
dependensi {// log4j2 kompilasi "org.apache.logging.log4j: log4j-api: 2.8" compile "org.apache.logging.log4j: log4j-core: 2.8" // digunakan untuk mendukung kompilasi async dalam logger 'com.lmax: disrupt: 3.3.6'Jika Anda menggunakan Maven, tambahkan dependensi berikut dalam file pom.xml.
<Dependencies> <dependency> <GroupId> org.apache.logging.log4j </groupid> <ArTifactId> log4j-api </t Artifactid> <version> 2.8 </version> </dependency> <troupid> org.apache.logging.log4j </groupid> <troupid> org.apache.logging.log4j </groupid> <troupAd> org.apache.logging.log4j </groupid> <troupact> <version> 2.8 </version> </dependency> <dependency> <GroupId> com.lmax </groupId> <ArTifactId> Disruptor </artifactid> <version> 3.3.6 </version> </dependency> </dependensi>
2. Tambahkan file konfigurasi log4j2
Buat file log4j2.xml di direktori root file sumber daya sumber daya proyek dan salin kode berikut ke dalam file.
<? Xml Version = "1.0" encoding = "UTF-8"?> <!-Status setelah konfigurasi digunakan untuk mengatur output informasi di dalam log4j2 itu sendiri. Itu tidak bisa diatur. Ketika diatur untuk dilacak, Anda akan melihat berbagai output terperinci di dalam log4j2. Can be set to OFF (off) or Error (only output error information) --><Configurationstatus="OFF"> <!-- Log file directory and compressed file directory configuration --> <Properties> <Propertyname="fileName">/home/kylin/log/knight/spring_log</Property> <Propertyname="fileGz">/home/kylin/log/knight/spring_log/7z</Property> </Properties> <appenders> <!-konfigurasi untuk log konsol output-> <consolename = "console" target = "system_out"> <!-Konsol hanya menghasilkan informasi di level dan di atas (onMatch), dan penolakan langsung-outmismatch)-<thresholdFilterlevel = "info" OnMatch = "Onmismatch) = <ThresholdFilterLevel =" info "OnMatch =" <PatternLayOutPattern = " %d {hh: mm: ss.sss} [ %t] %-5 level %logger {36}- %msg %n"/> </sonsole> <!- cetak semua informasi. Setiap kali ukuran melebihi ukuran, log dari ukuran ini akan secara otomatis disimpan di folder yang dibuat pada bulan tahun dan dikompresi sebagai arsip-> <rollingrandomAccessFileName = "infofile" filename = "$ {fileName} /web-info.log" imadiateFeLush = "false" "false" FilePattern = "$ {Filegz}/$$ {date: yyyy-mm}/app- %d {mm-dd-yyyy}- %i.web-info.gz"> <polaLayoutPattern = " %d {yyyy-mm-dd 'at' hh: mm: ss z} %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %{ %mm: mm: mm: mm: mm: mm: ss z %msg%xEx%n"/> <Policies> <TimeBasedTriggeringPolicyinterval="6"modulate="true"/> <SizeBasedTriggeringPolicysize="50 MB"/> </Policies> <Filters> <!-- Record only info and warning level information --> <ThresholdFilterlevel="error"onMatch="DENY"onMismatch="NEUTRAL"/> <ThresholdFilterLevel = "info" onMatch = "terima" onmishatch = "deny"/> </filters> <!-Tentukan jumlah maksimum paket terkompresi per hari, default 7, jika lebih dari yang sebelumnya, itu akan menimpa-> <defaultrolovered-strategion = "50"/> </Rollring/Rollring-> <defaultrolovestategyMax = "50"/> </Rollringrite-> <defaulRoverStatedSategy = "50"/ROLLING/ROLLINGRITE-> <lefaulRoverStatedMax = "50"/ROLLING/ROLLINGRIT <RollingrandomAccessFileName = "errorFile" filename = "$ {filename} /web-error.log" extreateFlath = "false" filepattern = "$ {filegz}/$$ {date: yyyy-mm}/app-%d {mm-dd-yyy {yyyy-mm}/app-%d {mm-dd-yyy} <PatternLayOutPattern = " %d {yyyyy-mm-dd 'di' hh: mm: ss z} [ %t] %-5 level %logger {36} %l %m- %msg %xex %n"/> <policies> <eTeBedTrigeringPolicyPolicyInterVal = "6" MODICE = "MODICE/" MODICEIES = "MODICEB/BEDIONCIONGEKSIPERINGEKPOLICYPOLICYERVAL =" 6 " </Policies> <Filters> <!-Catat saja informasi tingkat kesalahan-> <thresholdFilterLevel = "error" onMatch = "terima" onmishatch = "deny"/> </filters> <!-Tentukan jumlah maksimum yang dikompresi per hari, default 7, jika melebihi yang sebelumnya, itu akan terlalu banyak penulisan-> BIDRATEX = "Default, jika default sebelumnya," Default, jika default, "Default," </RollingrandomAccessFile> </prespenders> <!-Tentukan jumlah maksimum paket terkompresi per hari, standarnya adalah 7, dan yang sebelumnya akan ditimpa-> <defaultrolloverTategyMax = "50"/</rollingrandomAccessFile> </appenders> <!-Global Configuration, —konfigurasi </rollingrandomAccessFile> </appenders> <!-Global configuration, —konfigurasi, oleh Global, oleh Global, Global, Global, Global, Global, Global, Asyncroot - pencatatan asinkron - membutuhkan dukungan dari Disruptor Lmax -> <asyncrootlevel = "info" additivity = "false"> <appenderrefref = "konsol"/> <appenderrefref = "infofile"/> <appenderrefref = "errorfile"/</asyncroury </encerrefref = "errorFile"/asyncref3. Tulis Log4J2 Auxiliary Class
Setelah membuat konfigurasi di atas, kami dapat menulis kelas tambahan untuk membuatnya lebih nyaman bagi kami untuk menggunakan log4j2 untuk merekam log.
Buat file kelas L.Java di paket utils.
Paket com.spring.log4j2.utils; import org.apache.logging.log4j.logManager; impor org.apache.logging.log4j.logger;/*** Logger Logging kelas tambahan** dibuat oleh Kylin pada 2017/5/11. */public classl {private static final Logger Logger = LogManager.getLogger (); privatel () { / * tidak dapat dipakai * / melempar new UnportedOperationException ("tidak dapat dipakai"); } publicstaticloggergetLogger () {return logger; } publicstaticvoidt (string msg) {logger.trace (msg); } publicstaticvoidd (string msg) {logger.debug (msg); } publicstaticvoidi (string msg) {logger.info (msg); } publicstaticvoidw (string msg) {logger.warn (msg); } publicstaticvoide (string msg) {logger.error (msg); }}Setelah menulis kelas tambahan, sangat mudah digunakan, dan dapat dengan mudah digunakan melalui kode berikut.
@ControllerPublic ClassWebController {@RequestMapping ("/") publicStringIndex () {string msg = "Konfigurasi dan penggunaan log4j2 dalam seri boot spring"; LT (msg); Ld (msg); Li (msg); LW (MSG); Le (msg); mengembalikan "indeks"; }}Kelas tambahan di sini hanya menulis beberapa metode penggunaan dasar, Anda dapat menyesuaikannya sesuai dengan kebutuhan Anda dan menambahkan lebih banyak metode tambahan. Untuk metode yang tidak disediakan di kelas helper, Anda juga dapat menggunakan metode L.GetLogger () untuk mendapatkan instance Logger untuk digunakan.
4. Verifikasi hasil
Peringkat Level Log: Lacak <debug <info <warn <warn <error <fatal.
Karena level di log4J2 saya diatur ke level info. Oleh karena itu, hanya tiga tingkat info, peringatan, dan kesalahan yang dapat dilihat dalam informasi pencetakan (informasi pada tingkat fatal tidak dicetak, jika tidak dapat dilihat).
Informasi pencetakan ditunjukkan pada gambar di bawah ini:
Pada saat yang sama, file log dihasilkan dalam sistem komputer, seperti yang ditunjukkan pada gambar di bawah ini:
Dengan mengamati jalurnya, Anda dapat menemukan bahwa jalur ini persis jalur yang ditetapkan dalam log4j2.xml:
<!-Direktori File Log dan Konfigurasi Direktori File Terkompresi-> <Properties> <so propertyName = "FileName">/home/kylin/log/knight/spring_log </prop Property> <vageName = "FileGZ">/home/kylin/log/knight/spring_log/7z </properti> </properti> </properti>
5. lebih
Alamat GitHub Log4J2: https://github.com/apache/logging-log4j2
Alamat kode sampel tutorial ini: https://github.com/dkylin/springboot-sample/tree/master/springboot-log4j2
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.