Di bawah Spring Boot, saya mencoba menggunakan Log4j untuk logstash dan menambahkan file log4j.properties di direktori SRC/Main/Resources untuk menyesuaikan file log output, tetapi gagal. Mengkonfigurasi Path Logging di Application.yml Pencetakan log berhasil dicetak, tetapi logging file log gagal untuk berhasil didebug. Saya memeriksa informasi secara online dan mengatakan bahwa Spring Boot menggunakan logback untuk merekam log secara default. Setelah banyak upaya, Log4J gagal, jadi ia berubah menjadi logback untuk merekam, dan tes akhir berhasil.
1. Apakah Anda memiliki pertanyaan tentang jalur file log boot Spring?
Properti logging.path dan logging.file dikonfigurasi secara bersamaan, sebagai berikut:
Logging: path: /var /file log: test.log
Hanya file test.log yang akan dihasilkan di bawah jalur root proyek, dan file log tidak akan dihasilkan di bawah jalur yang ditentukan (jalur log yang diharapkan adalah: logging.path + logging.file).
Alasan: Di Spring Boot, Anda hanya perlu mengonfigurasi salah satu dari dua properti: Logging.Path dan Logging.File. Jika dikonfigurasi pada saat yang sama, gunakan atribut logging.file.
Ketika properti Loggin.Path dikonfigurasi, file spring.log akan dihasilkan di jalur ini, yaitu, nama file log default spring.log digunakan saat ini.
Ketika properti loggin.file dikonfigurasi, file log dengan nama yang ditentukan dihasilkan di bawah jalur yang ditentukan. Standarnya adalah jalur relatif proyek, dan Anda dapat menentukan jalur absolut untuk logging.file.
Logging:
path:/var/logs # menghasilkan file spring.log di/var/log direktori file: /var/logs/test.log # menghasilkan file test.log di/var/direktori logs
2. Alasan Logback Mengganti Log4j:
Berikut adalah kutipan dari internet:
Logback dan Log4j sangat mirip. Jika Anda terbiasa dengan log4j, logback akan sangat mudah terbiasa. Berikut ini adalah beberapa keuntungan dari logback dibandingkan log4j:
1. Kernel yang mengimplementasikan logback lebih cepat telah ditulis ulang, dan kinerjanya ditingkatkan lebih dari 10 kali pada beberapa jalur eksekusi kunci. Selain itu, logback tidak hanya meningkatkan kinerja, tetapi juga memuat memori awal.
2. Logback uji yang sangat memadai setelah beberapa tahun, banyak jam pengujian. Tes logback sangat berbeda. Dalam sudut pandang penulis, penting untuk memilih logback alih -alih log4j.
3. Logback-Klasik mengimplementasikan SLF4J secara alami. Logback-Classic mengimplementasikan SLF4J. Saat menggunakan SLF4J, Anda bahkan tidak bisa merasa Logback-Classic. Dan karena Logback-Classic mengimplementasikan SLF4J secara alami, beralih ke log4j atau lainnya sangat mudah. Tidak apa -apa untuk hanya menyediakannya ke paket JAR lain, dan tidak perlu menyentuh kode yang diimplementasikan melalui SLF4JAPI.
4. Dokumen yang sangat memadai, situs web resmi memiliki lebih dari 200 halaman dokumen.
5. Muat ulang file konfigurasi secara otomatis. Ketika file konfigurasi dimodifikasi, Logback-Classic dapat secara otomatis memuat ulang file konfigurasi. Proses pemindaian cepat dan aman, dan tidak memerlukan utas pemindaian lain untuk dibuat. Teknologi ini sepenuhnya memastikan bahwa aplikasi dapat berjalan dengan bahagia di lingkungan JEE.
6. Lilith, Lilith adalah pengamat peristiwa log, mirip dengan log4j chainsaw. Lilith juga dapat memproses sejumlah besar data log.
7. Mode Perhatian dan Pemulihan yang Sangat Ramah. Dalam mode Perhatian, beberapa instance FileAppender dijalankan di bawah beberapa JVM dan dapat dengan aman menulis file log yang sama. RollingFileAppender akan memiliki beberapa keterbatasan. FileAppender Logback dan subclass -nya, termasuk RollingFileAppender, dapat pulih dari pengecualian I/O yang sangat ramah.
8. File konfigurasi dapat menangani situasi yang berbeda. Pengembang sering perlu menilai bahwa file konfigurasi logback yang berbeda berada di lingkungan yang berbeda (pengembangan, pengujian, produksi). Dan file konfigurasi ini hanya sedikit berbeda, dan dapat diimplementasikan melalui, dan sehingga file konfigurasi dapat beradaptasi dengan beberapa lingkungan.
9. Filter, kadang -kadang, perlu mendiagnosis masalah dan mencatatnya. Di Log4J, level log hanya dapat dikurangi, tetapi ini akan menghasilkan sejumlah besar log dan akan mempengaruhi kinerja aplikasi. Dalam logback, Anda dapat terus mempertahankan level log itu dan menghilangkan beberapa situasi khusus. Misalnya, pengguna yang masuk, log -nya akan dipukul di level debug dan pengguna lain dapat terus dipukul di level peringatan. Untuk mengimplementasikan fungsi ini, hanya 4 baris konfigurasi XML yang diperlukan. Anda dapat merujuk ke mdcfilter.
10. SiftingAppender (appender yang sangat multifungsi) dapat digunakan untuk membagi file log berdasarkan parameter berjalan yang diberikan. Misalnya, SiftingAppender dapat membedakan acara log dari tindak lanjut hingga sesi pengguna, dan kemudian setiap pengguna akan memiliki file log.
11. Secara otomatis mengompres log yang telah dicetak. Ketika file baru dihasilkan, file log yang telah dicetak akan dikompresi secara otomatis. Kompresi adalah proses asinkron, jadi bahkan untuk file log besar, aplikasi tidak akan terpengaruh dalam proses kompresi.
12. Pohon tumpukan memiliki versi paket. Logback akan membawa data paket saat dipublikasikan.
13. Secara otomatis menghapus file log lama. Dengan mengatur properti maxhistory dari timebasedrollingpolicy atau sizeandmasedfnatp, Anda dapat mengontrol jumlah maksimum file log yang telah dihasilkan. Jika Maxhistory 12 diatur, file log yang telah lebih dari 12 bulan akan secara otomatis dihapus.
Singkatnya, logback lebih baik daripada log4j. Biarkan kami membangun semua aplikasi kami di logback!
3. Masukkan logback ke dalam proyek
Tambahkan dependensi paket, gaya Maven:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.11</version> </dependency> <dependency> <GroupId> net.logstash.log4j </proupid> <ArTifactId> jsonevenvent-layout </stifactid> <version> 1.7 </version> </dependency>
4. Tambahkan Logback.xml
Tambahkan file logback.xml ke direktori SRC/Main/Resources, dan sistem akan secara otomatis memuat konfigurasi Logback.xml.
Logback.xml:
<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="60 seconds" debug="false"> <include resource="org/springframework/boot/logging/logback/base.xml" /> <contextName>logback</contextName> <!-- Log files to specific directory--> <!-- <property name="log.path" value = "e: //test//logback.log"/>-> <name properti = "log.path" value = "/user/chang/desktop/chlogs/logback.log"/> <appencle name = "stash"> <destination> 192.168.220.83:9601 </Destination> <counder/encod/192.168.220.83:9601 </Destination> <counder/encod/192.168. name = "Console"> <!-<nilter> <level> error </level> </tilter>-> <coder> <poler> %d {hh: mm: ss.sss} %contextName [ %thread] %-5Level %Logger {36}- %msg %n </pola> </encoder> </evender> " <shile> $ {log.path} </file> <lollingpolicy> <filenamepattern> logback. %d {yyyy-mm-dd} .log </filenamepattern> </rollingpolicy> <coder> <poler> %d {hh: mm: ss.ssssssssssssssnam %msg %n </at pola> </coder> </appender> <root level = "info"> <appent-ref ref = "stash"/> <appender-ref ref = "console"/> <appent-ref ref = "file"/> </root> <!-logback adalah paket dalam java <logger name = "counds cound ara.cord. name = "com.dudu.controller.learncontroller" level = "warn" addement = "false"> <appender-ref ref = "console"/> </logger>-> </configuration>5. Logstash-Logback-Encoder Version
Dalam boot Spring, jika Anda menggunakan logstash-logback-encoder, Anda mungkin perlu memberi tahu Maven nomor versi spesifik untuk menghindari konflik ketergantungan paket. Misalnya, Anda dapat mengatur dependensi logback-core, logback-klasik, dan akses logback seperti berikut:
<Properties> <ch.qos.logback.version> 1.2.3 </ch.qos.logback.version> </selenties> <gantengan manajemen> <dependencies> <dependency> <groupid> ch.qos.logback </groupid> <t ArtifactId> logback-core </arttifactid> </groupid> <Artifactid> logback-core </arttifactid> </version> $ {version. <dependency> <GroupId> ch.qos.logback </groupid> <ArTifactId> Logback-classic </artifactid> <version> $ {ch.qos.logback.version} </version> </dependency> <groupid> CH.QOS.LOGBACK </Versi </Artifactid> <roupid> CH.QOS.LOGBACK </GroupD> <ArtifacTID> <version> $ {ch.qos.logback.version} </version> </dependency> </dependency> </dependencyManagement>6. Konstruksi Layanan Logstash
Lihat:
1.logstash-logback-encoder
Meringkaskan
Di atas adalah metode menggunakan logback, logstash, dan rusa untuk merekam file log di boot musim semi yang diperkenalkan kepada Anda. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!