Apakah tomcat menggunakan log4j?
Apache Tomcat 8
API Logging Servlets mendahului java.util.API logging yang sekarang disediakan oleh Java. Karena itu, itu tidak menawarkan banyak pilihan kepada Anda. E.G., Anda tidak dapat mengontrol level log. Namun dapat dicatat bahwa dalam implementasi Apache Tomcat panggilan ke servletContext.log (string) atau genericservlet.Log (String) dicatat pada level info. Panggilan ke ServletContext.Log (String, Throwable) atau GenericServlet.log (string, lempar) dicatat pada tingkat yang parah.
Ringkasan:
Dalam artikel ini, saya akan menjelaskan pentingnya menggunakan Apache Tomcat 9 dengan log4j2 untuk tujuan logging. Saya juga akan memberikan panduan langkah demi langkah tentang cara mengkonfigurasi Apache Tomcat dengan log4j2, dan mendiskusikan praktik terbaik untuk masuk di lingkungan produksi.
Poin -Poin Kunci:
- Apache Tomcat 9 dan log4j2 menawarkan berbagai opsi penebangan dan appenders
- LOG4J2 menyediakan konfigurasi file gulungan dan log yang disederhanakan
- Untuk mengonfigurasi log4j2 dengan Apache Tomcat, tambahkan pustaka yang diperlukan ke ClassPath dan hapus logging default.file properti
- Mulai dari Tomcat 8.5.4, Perpustakaan Juli-Adapter tidak lagi diperlukan karena log4j2 dapat langsung dicolokkan ke Java.util.logging
- Untuk lingkungan produksi, disarankan untuk menyesuaikan konfigurasi log4j2 untuk menghindari duplikasi log, mengaktifkan rotasi log, dan menghapus appenders yang tidak digunakan
- Selain itu, bergabung dengan penebang yang berbeda menjadi satu appender dapat membantu mengidentifikasi masalah penyebaran dalam aplikasi
- Untuk memaksa aplikasi menggunakan sistem.keluar dan sistem.err to log, tambahkan atribut SwallowOutput dalam konteks.file xml
- Aplikasi Menggunakan Jul Framework dapat dikonfigurasi untuk menggunakan log4j2 dengan memodifikasi variabel lingkungan logging_manager
- Saat menggunakan boot spring dengan log4j2, kecualikan ketergantungan pegas-boot-starter-logging dan tambahkan spring-boot-starter-log4j2
- Kustomisasi level logging untuk paket tertentu dan nonaktifkan spanduk musim semi sesuai kebutuhan
Pertanyaan:
- Mengapa saya harus mempertimbangkan menggunakan Apache Tomcat 9 dengan log4j2 untuk logging?
LOG4J2 menawarkan berbagai opsi penebangan dan appenders, menjadikannya alat yang ampuh untuk mengelola log di Tomcat. - Bagaimana cara mengkonfigurasi log4j2 dengan apache tomcat?
Untuk mengonfigurasi log4j2 dengan Apache Tomcat, Anda perlu menambahkan pustaka yang diperlukan ke ClassPath dan menghapus logging default.file properti. - Mengapa Perpustakaan Juli-Adapter tidak lagi dibutuhkan di Tomcat 8.5.4 ke atas?
Log4j2 dapat langsung dicolokkan ke java.util.Logging, menghilangkan kebutuhan akan perpustakaan Juli-Adapter. - Konfigurasi logging apa yang disarankan untuk lingkungan produksi?
Di lingkungan produksi, disarankan untuk menyesuaikan konfigurasi log4j2 untuk menghindari duplikasi log, mengaktifkan rotasi log, dan menghapus appenders yang tidak digunakan. - Bagaimana saya bisa memaksa aplikasi menggunakan sistem.keluar dan sistem.err to log?
Dengan menambahkan atribut SwallowOutput dalam konteks.File XML, aplikasi menggunakan sistem.keluar dan sistem.err dapat dipaksa untuk masuk. - Dapat aplikasi menggunakan kerangka kerja jul dikonfigurasi untuk menggunakan log4j2?
Ya, dengan memodifikasi variabel lingkungan logging_manager, aplikasi menggunakan kerangka kerja jul dapat dikonfigurasi untuk menggunakan log4j2. - Apa yang harus saya lakukan untuk menggunakan log4j2 dengan boot musim semi?
Untuk menggunakan log4j2 dengan boot spring, kecualikan ketergantungan pegas-boot-starter-logging dan tambahkan spring-boot-starter-log4j2. - Bagaimana saya bisa menyesuaikan level logging untuk paket tertentu di Spring Boot?
Level logging untuk paket tertentu dapat disesuaikan dengan memodifikasi properti konfigurasi logging di file konfigurasi aplikasi. - Apakah mungkin untuk menonaktifkan spanduk musim semi di boot musim semi?
Ya, spanduk musim semi dapat dinonaktifkan dengan mengatur musim semi.utama.Properti mode spanduk untuk dimatikan di file konfigurasi aplikasi. - Mengapa Saya Harus Menggunakan Log4J2 sebagai ganti implementasi logging default di Tomcat?
LOG4J2 menawarkan berbagai opsi logging dan appenders, membuatnya lebih fleksibel dan kuat dibandingkan dengan implementasi logging default di Tomcat.
Jawaban terperinci:
- Mengapa saya harus mempertimbangkan menggunakan Apache Tomcat 9 dengan log4j2 untuk logging?
Apache Tomcat 9 dengan log4J2 menyediakan sistem logging yang lebih maju dan fleksibel dibandingkan dengan implementasi logging default. LOG4J2 menawarkan berbagai macam appenders dan opsi logging, memungkinkan Anda untuk menyesuaikan dan mengelola log Anda secara efektif. Kesederhanaan konfigurasi log4j2 dan kemampuannya untuk menggulung file log dengan nama asli menjadikannya pilihan yang menarik untuk konfigurasi konsumsi log. Selain itu, menggunakan log4j2 menghilangkan keterbatasan API logging servlets, seperti ketidakmampuan untuk mengontrol level log. - Bagaimana cara mengkonfigurasi log4j2 dengan apache tomcat?
Mengkonfigurasi log4j2 dengan apache tomcat langsung. Pertama, Anda perlu menambahkan perpustakaan Log4J2-API, Log4J2-Core, dan Log4J2-AppServer ke Tomcat Classpath. Kemudian, berikan file konfigurasi log4j2 di proyek Anda. Terakhir, hapus logging default.file properti dari instalasi tomcat Anda. Mengikuti langkah -langkah ini akan memungkinkan log4j2 sebagai kerangka logging untuk tomcat. - Mengapa Perpustakaan Juli-Adapter tidak lagi dibutuhkan di Tomcat 8.5.4 ke atas?
Versi Tomcat 8.5.4 dan di atas memperkenalkan integrasi langsung dengan log4j2, menghilangkan kebutuhan untuk perpustakaan juli-adal atau. LOG4J2 sekarang dapat dicolokkan langsung ke Java.util.Logging, menjadikannya pengganti yang mulus untuk API Logging Servlets. Integrasi ini menyederhanakan proses konfigurasi logging dan memberikan lebih banyak kontrol atas level log dan appenders. - Konfigurasi logging apa yang disarankan untuk lingkungan produksi?
Saat mengkonfigurasi log4j2 untuk lingkungan produksi, beberapa pertimbangan harus diperhitungkan. Pertama, penting untuk menghindari duplikasi output log di Catalina.Out File dan Catalina.file log. Ini dapat dicapai dengan menghapus konsolhandler. Kedua, disarankan untuk mengaktifkan rotasi log untuk Catalina.file log untuk mencegahnya tumbuh terlalu besar. Terakhir, menghapus appender yang tidak digunakan seperti manajer.Log dan Host_Manager.Log dapat membantu menyatakan output log. Selain itu, bergabung dengan penebang yang berbeda menjadi satu appender, seperti Catalina dan Localhost Loggers, dapat menyederhanakan pemecahan masalah dan mengidentifikasi masalah penyebaran. - Bagaimana saya bisa memaksa aplikasi menggunakan sistem.keluar dan sistem.err to log?
Untuk memaksa aplikasi yang menggunakan sistem.keluar dan sistem.err to log, Anda dapat menambahkan atribut SwallowOutput ke konteks default.File XML Terletak di $ Catalina_Base/Conf/Context.xml. Atribut ini menginstruksikan Tomcat untuk mengarahkan sistem.keluar dan sistem.err ke sistem logging, memastikan bahwa semua output ditangkap dalam log. - Dapat aplikasi menggunakan kerangka kerja jul dikonfigurasi untuk menggunakan log4j2?
Ya, aplikasi yang menggunakan kerangka kerja Jul (Java Util Logging) dapat dikonfigurasi untuk menggunakan log4j2. Dengan memodifikasi variabel lingkungan logging_manager di setenv.file sh, Anda dapat mengatur nilainya ke “-djava.util.logging.Manajer = org.Apache.logging.log4j.Jul.LogManager “. Konfigurasi ini memastikan bahwa aplikasi menggunakan JUL akan menggunakan format log4J2 untuk log mereka alih -alih format default. - Apa yang harus saya lakukan untuk menggunakan log4j2 dengan boot musim semi?
Untuk menggunakan log4j2 dengan boot musim semi, Anda perlu mengecualikan ketergantungan pegas-boot-starter default dari artefak starter yang berbeda. Ini bisa dilakukan dengan menentukan <mengecualikan>Pegas-boot-starter-logging</mengecualikan> Di bagian dependensi POM proyek Anda.file xml. Setelah mengecualikan ketergantungan logging default, Anda dapat menambahkan ketergantungan pegas-boot-starter-log4j2, yang mencakup semua dependensi log4j2 yang diperlukan dan yang slf4j. Jika Anda tidak menggunakan salah satu fitur slf4j, Anda dapat menggunakan ketergantungan log4j-web sebagai gantinya. - Bagaimana saya bisa menyesuaikan level logging untuk paket tertentu di Spring Boot?
Di Spring Boot, Anda dapat menyesuaikan level logging untuk paket tertentu dengan memodifikasi konfigurasi logging di properti aplikasi atau file YAML. Sintaks untuk menyesuaikan level logging logging.tingkat.package_name = level. Misalnya, jika Anda ingin mengatur level debug untuk “org.Paket SpringFramework “dan paket” Hello “, Anda dapat menambahkan konfigurasi berikut: logging.tingkat.org.springframework = debug Dan logging.tingkat.halo = debug. - Apakah mungkin untuk menonaktifkan spanduk musim semi di boot musim semi?
Ya, dimungkinkan untuk menonaktifkan spanduk musim semi di Spring Boot. Dengan mengatur musim semi.utama.mode spanduk Properti untuk “mati” di properti aplikasi atau file YAML, Anda dapat mencegah spanduk muncul di output konsol atau file log. - Mengapa Saya Harus Menggunakan Log4J2 sebagai ganti implementasi logging default di Tomcat?
LOG4J2 menawarkan beberapa keunggulan dibandingkan implementasi logging default di Tomcat. Ini memberikan rentang appenders dan opsi logging yang lebih luas, memungkinkan Anda untuk menyesuaikan log Anda sesuai dengan kebutuhan Anda. LOG4J2 juga menawarkan lebih banyak fleksibilitas dalam penggulungan file log, menyederhanakan konfigurasi konsumsi log. Selain itu, log4j2 menghilangkan keterbatasan API logging servlets, seperti ketidakmampuan untuk mengontrol level log. Secara keseluruhan, menggunakan log4j2 dapat meningkatkan pengalaman logging Anda di Tomcat.
Apache Tomcat 8
API Logging Servlets mendahului java.util.API logging yang sekarang disediakan oleh Java. Karena itu, itu tidak menawarkan banyak pilihan kepada Anda. E.G., Anda tidak dapat mengontrol level log. Namun dapat dicatat bahwa dalam implementasi Apache Tomcat panggilan ke servletContext.log (string) atau genericservlet.Log (String) dicatat pada level info. Panggilan ke ServletContext.Log (String, Throwable) atau GenericServlet.log (string, lempar) dicatat pada tingkat yang parah.
Menjaga log Anda bersih dengan Apache Tomcat 9, log4j2 dan spring-boot
Hari -hari terakhir ini saya telah bermain dengan Apache Tomcat 9 dan log4j2. Anda mungkin bertanya -tanya mengapa saya ingin mengubah yang baik tomcat juli lama. Nah, meskipun saya suka kesederhanaan konfigurasinya dan fakta bahwa Juli bekerja, log4j2 menawarkan berbagai macam appenders yang membuatnya sangat menarik. Saya juga lebih suka cara bagaimana log4j2 menggulung file, menjaga nama asli tidak disentuh (e.G. Catalina.log), ini membuat konfigurasi konsumsi log saya (logstash) sedikit lebih sederhana.
Apache Tomcat dengan konfigurasi log4j2
Konfigurasi Apache-Tomcat cukup sederhana. Anda hanya perlu menambahkan perpustakaan Log4J2-API, Log4J2-Core dan Log4J2-AppServer ke dalam Tomcat ClassPath, berikan file konfigurasi log4j2 dan menghapus itu $ Catalina_base/conf/logging.properti dari instalasi Anda. Langkah -langkah ini dijelaskan di sini.
Jika Anda menggunakan versi tomcat sebelumnya dari 8.5.4 Anda mungkin bertanya-tanya apa yang terjadi dengan Perpustakaan Juli-Adapter dari Tomcat Extra yang terkenal? Mereka tidak diperlukan lagi, karena log4j2 dapat dicolokkan secara langsung ke java.util.logging, hore! Lihat lebih banyak di ASF BUGZILLA – BUG 58588
Konfigurasi logging untuk lingkungan produksi
Jika Anda menjalankan versi Tomcat terbaru, Anda dapat melihat bahwa bab “menggunakan log4j” dari versi sebelumnya belum ada di sana. Anda mungkin memiliki godaan untuk menggunakan kembali log4j lama.properti yang mencerminkan java default.util.logging. Hati -hati, karena sintaks properti log4j2 telah berubah. Dengan yang ini (btw, terima kasih Bryan Maupin. ) Anda akan mendapatkan konfigurasi default dengan tiga Tomcat Loggers dan Appenders default. Untuk penggunaan produksi, Anda dapat memperhitungkan pertimbangan dokumen Tomcat dan rekomendasi tentang logging dari Mark Thomas, Anggota Komite Manajemen Proyek Apache Tomcat:
- Melakukan TIDAKT duplikat Tomcat keluaran di Catalina.keluar (konsol) dan di Catalina.log, singkirkan konsolhandler
- Menambahkan rotasi ke Catalina Anda.catatan
- Menghapus appenders yang tidak digunakan Pengelola.Log dan Host_Manager.catatan
- Bergabung berbeda Pencari (Catalina & localhost) di satu appender (Catalina.catatan). Ini berguna untuk melihat masalah penyebaran dalam aplikasi seperti filter yang ditentukan secara salah.
Konfigurasi log4j2 yang disediakan dalam contoh mencoba mengikuti pertimbangan tersebut. Jika Anda memulai server Tomcat dengan itu, dan tomcat Anda berjalan “sehat”, Anda akan melihat hampir tidak ada di konsol. Dengan konfigurasi ini, di konsol Anda hanya akan melihat hal -hal yang sangat besar seperti outofmemoryErrors, atau dump thread.
Sistem pemaksaan.keluar dan sistem.err to log
Jika kami menggunakan aplikasi di server kami yang masih menggunakan Sistem.keluar dan/atau Sistem.berbuat salah, Kami dapat memaksa mereka untuk menggunakan penambahan logger kami swallowoutput = “true” di default $ Catalina_base/conf/konteks.xml dari server. Kita dapat melakukan ini juga per aplikasi, memodifikasi masing-masing meta-inf/konteks mereka.xml.
Java Util Logging dan Log4J2
Kami juga dapat memiliki aplikasi yang menggunakan kerangka kerja Jul yang baik dan lama:
01 Apr 2019 9:22:05.HelloWorldController Sayhello Info: Halo, Jul.
Aplikasi ini akan menggunakan default logging.properti dari JDK kami, level default yang mana Info dan memformat performa sederhana. Kita dapat memaksa mereka menggunakan format log4j2 kita mengubah variabel lingkungan Logging_manager. Anda dapat melakukan ini menambahkan di setenv.SH File: logging_manager = “-djava.util.logging.Manajer = org.Apache.logging.log4j.Jul.LogManager “ Sekarang log Anda akan terlihat seperti hal seperti ini:
Tomcat 2019-04-01 09: 13: 53.524 [Catalina-Utility-1] Info Halo.HelloWorldApplication- Halo, Jul.
Ingat itu org.Apache.logging.log4j.Jul.LogManager termasuk dalam log4j-jul-2.11.2.jembatan jar yang harus ditambahkan ke Classpath.
Spring Boot dan Log4J2
Kami ingin menggunakan aplikasi hello boot pegas, aplikasi istirahat yang menggunakan konfigurasi log4j2 kami (appender and format) dan pada saat yang sama kami ingin menjaga kemampuan mendefinisikan yang berbeda logger yang berbeda. Misalnya mari kita bayangkan bahwa kita ingin mengatur level debug ke kelas bisnis kita, paket Hello, dan ke springframework. Dan juga membungkam spanduk musim semi klasik:
logging.tingkat.org.SpringFramework = Debug Logging.tingkat.halo = debug spring.utama.Banner-mode = OFF
Secara default starter boot-boot menggunakan logback, jadi untuk menggunakan log4j2 kita harus mengecualikan Pegas-boot-starter-logging dari artefak starter yang berbeda dan tambahkan Spring-boot-starter-log4j2 ketergantungan. Yang terakhir ini akan mencakup semua dependensi log4j2 plus yang slf4j. Mungkin terjadi bahwa kami tidak menggunakan salah satu fitur SL4J, seperti pesan parametrized, atau seperti dalam kasus kami yang ingin kami gunakan secara langsung log4j2. Jika ini kasus Anda, Anda bisa menambahkan LOG4J-WEB ketergantungan. Ngomong -ngomong, ini yang harus Anda tambahkan untuk aplikasi web non -Spring, lihat lebih lanjut di “Menggunakan Log4J di Aplikasi Web”.
Kesimpulan
Dalam entri ini kami telah belajar cara mengonfigurasi Apache Tomcat untuk bekerja dengan log4j2, cara membuat pengaturan ini siap untuk produksi dan cara menggunakan aplikasi boot-boot di server Tomcat kami yang memanfaatkan konfigurasi kami. Anda dapat menemukan semua ini di repositori github ini.
Semoga hari pengkodean yang menyenangkan!
Apache Tomcat 8
Pencatatan internal untuk Apache Tomcat menggunakan Juli, sebuah garpu ganti rugi dari Apache Commons Logging yang, secara default, dikodekan keras untuk menggunakan java.util.Kerangka Pencatatan. Ini memastikan bahwa penebangan internal Tomcat dan penebangan aplikasi web apa pun akan tetap independen, bahkan jika aplikasi web menggunakan Apache Commons Logging.
Untuk mengonfigurasi Tomcat untuk menggunakan kerangka logging alternatif untuk pencatatan internalnya, orang harus mengganti implementasi Juli yang lebih keras untuk menggunakan java.util.Logging dengan implementasi Juli yang mempertahankan mekanisme penemuan logging commons penuh. Implementasi seperti itu disediakan sebagai komponen ekstra. Instruksi tentang Cara Mengkonfigurasi Tomcat untuk Menggunakan Kerangka Log4J untuk Penebangan Internal dapat ditemukan di bawah.
Aplikasi web yang berjalan di Apache Tomcat dapat:
- Gunakan kerangka logging apa pun pilihannya.
- Gunakan API Logging System, Java.util.logging .
- Gunakan API logging yang disediakan oleh Java Servlets Specification, Javax.servlet.ServletContext.catatan(. )
Kerangka logging yang digunakan oleh aplikasi web yang berbeda adalah independen. Lihat Loading Kelas untuk detail lebih lanjut. Pengecualian untuk aturan ini adalah Java.util.logging . Jika digunakan secara langsung atau tidak langsung oleh perpustakaan logging Anda maka elemennya akan dibagikan di seluruh aplikasi web karena dimuat oleh pemuat kelas sistem.
Java Logging API – Java.util.logging
Apache Tomcat memiliki implementasi sendiri dari beberapa elemen kunci Java.util.API logging. Implementasi ini disebut juli. Komponen kunci di sana adalah implementasi logManager khusus, yang mengetahui berbagai aplikasi web yang berjalan di Tomcat (dan loader kelas yang berbeda). Ini mendukung konfigurasi pencatatan per aplikasi pribadi. Ini juga diberitahu oleh Tomcat ketika aplikasi web diturunkan dari memori, sehingga referensi ke kelasnya dapat dibersihkan, mencegah kebocoran memori.
Jawa ini.util.Implementasi logging diaktifkan dengan menyediakan properti sistem tertentu saat memulai Java. Script startup Apache Tomcat melakukan ini untuk Anda, tetapi jika Anda menggunakan alat yang berbeda untuk menjalankan Tomcat (seperti JSVC, atau menjalankan Tomcat dari dalam IDE), Anda harus merawatnya sendiri.
Rincian lebih lanjut tentang java.util.Logging dapat ditemukan dalam dokumentasi untuk JDK Anda dan di halaman Javadoc -nya untuk Java.util.Paket logging.
Rincian lebih lanjut tentang Tomcat Juli dapat ditemukan di bawah.
Servlets Logging API
Panggilan ke Javax.servlet.ServletContext.catatan(. ) untuk menulis pesan log ditangani oleh penebangan tomcat internal. Pesan semacam itu dicatat ke kategori bernama
org.Apache.Catalina.inti.Containerbase.[$].[$].[$]
Pencatatan ini dilakukan sesuai dengan konfigurasi logging tomcat. Anda tidak dapat menimpanya dalam aplikasi web.
API Logging Servlets mendahului java.util.API logging yang sekarang disediakan oleh Java. Karena itu, itu tidak menawarkan banyak pilihan kepada Anda. E.G., Anda tidak dapat mengontrol level log. Namun dapat dicatat bahwa dalam implementasi Apache Tomcat panggilan ke servletContext.log (string) atau genericservlet.Log (String) dicatat pada level info. Panggilan ke ServletContext.Log (String, Throwable) atau GenericServlet.log (string, lempar) dicatat pada tingkat yang parah.
Menghibur
Saat menjalankan tomcat di unixes, output konsol biasanya diarahkan ke file bernama Catalina.keluar . Namanya dapat dikonfigurasi menggunakan variabel lingkungan. (Lihat skrip startup). Apapun yang ditulis untuk sistem.err/out akan terperangkap dalam file itu. Itu mungkin termasuk:
- Pengecualian Tanpa Dipicu Dicetak oleh Java.Lang.ThreadGroup.Tanpa DaughtException (..)
- Dumps Thread, jika Anda memintanya melalui sinyal sistem
Saat berjalan sebagai layanan di Windows, output konsol juga ditangkap dan dialihkan, tetapi nama file berbeda.
Konfigurasi logging default di Apache Tomcat menulis pesan yang sama ke konsol dan ke file log. Ini bagus saat menggunakan tomcat untuk pengembangan, tetapi biasanya tidak diperlukan dalam produksi.
Aplikasi lama yang masih menggunakan sistem.keluar atau sistem.err dapat ditipu dengan mengatur atribut SwallowOutput pada konteks. Jika atribut diatur ke true, panggilan ke sistem.Keluar/err selama pemrosesan permintaan akan dicegat, dan outputnya akan diumpankan ke subsistem logging menggunakan javax.servlet.ServletContext.catatan(. ) panggilan.
Catatan, bahwa fitur SwallowOutput sebenarnya adalah trik, dan memiliki keterbatasan. Ini hanya berfungsi dengan panggilan langsung ke sistem.Out/err, dan hanya selama siklus pemrosesan permintaan. Itu mungkin tidak berfungsi di utas lain yang mungkin dibuat oleh aplikasi. Tidak dapat digunakan untuk mencegat kerangka kerja logging yang sendiri ditulis ke aliran sistem, karena yang dimulai lebih awal dan dapat memperoleh referensi langsung ke aliran sebelum pengalihan terjadi.
Akses logging
Access Logging adalah fitur terkait tetapi berbeda, yang diimplementasikan sebagai katup . Itu menggunakan logika mandiri untuk menulis file lognya. Persyaratan penting untuk penebangan akses adalah untuk menangani aliran data kontinu yang besar dengan overhead rendah, sehingga hanya menggunakan Apache Commons Logging untuk pesan debug sendiri. Pendekatan implementasi ini menghindari overhead tambahan dan konfigurasi yang berpotensi kompleks. Silakan merujuk ke dokumentasi Valves untuk detail lebih lanjut tentang konfigurasinya, termasuk berbagai format laporan.
Menggunakan java.util.logging (default)
Implementasi default Java.util.Pencatatan yang disediakan di JDK terlalu terbatas untuk bermanfaat. Keterbatasan utama adalah ketidakmampuan untuk memiliki pencatatan aplikasi per-WEB, karena konfigurasinya per-VM. Akibatnya, Tomcat akan, dalam konfigurasi default, mengganti implementasi LogManager default dengan implementasi ramah kontainer yang disebut Juli, yang membahas kekurangan ini.
Juli mendukung mekanisme konfigurasi yang sama dengan JDK Java standar.util.logging, menggunakan pendekatan terprogram, atau file properti. Perbedaan utama adalah bahwa file properti per-kelas dapat diatur (yang memungkinkan konfigurasi Webapp ramah yang mudah dipindahkan), dan file properti mendukung konstruksi yang diperluas yang memungkinkan lebih banyak kebebasan untuk mendefinisikan penangan dan menugaskannya ke penebang.
Juli diaktifkan secara default, dan mendukung konfigurasi per classloader, di samping Java global reguler.util.konfigurasi logging. Ini berarti bahwa penebangan dapat dikonfigurasi pada lapisan berikut:
- Secara global. Yang biasanya dilakukan dalam $/conf/logging.file properti. File ditentukan oleh java.util.logging.konfigurasi.Properti sistem file yang diatur oleh skrip startup. Jika tidak dapat dibaca atau tidak dikonfigurasi, standarnya adalah menggunakan $/lib/logging.File Properti di JRE.
- Di aplikasi web. File akan menjadi web-inf/kelas/logging.properti
Logging default.Properti di JRE menentukan konsolhandler yang mengarahkan logging ke sistem.berbuat salah. Conf/logging default.Properti di Apache Tomcat juga menambahkan beberapa FileHandler yang menulis ke file.
Ambang level log pawang adalah info secara default dan dapat diatur menggunakan parah, peringatan, info, konfigurasi, halus, lebih halus, terbaik atau semua. Anda juga dapat menargetkan paket tertentu untuk mengumpulkan logging dari dan menentukan level.
Untuk mengaktifkan penebangan debug untuk bagian dari internal Tomcat, Anda harus mengkonfigurasi logger yang sesuai dan penangan yang sesuai untuk menggunakan level terbaik atau semua. e.G.:
org.Apache.Catalina.sidang.level = semua java.util.logging.Consolhandler.level = semua
Saat mengaktifkan pencatatan debug, disarankan agar diaktifkan untuk ruang lingkup tersempit yang mungkin karena pencatatan debug dapat menghasilkan informasi dalam jumlah besar.
Konfigurasi yang digunakan oleh Juli sama dengan yang didukung oleh Java polos.util.logging, tetapi menggunakan beberapa ekstensi untuk memungkinkan fleksibilitas yang lebih baik dalam mengkonfigurasi penebang dan penangan. Perbedaan utamanya adalah:
- Awalan dapat ditambahkan ke nama pawang, sehingga beberapa penangan dari satu kelas dapat dipakai. Awalan adalah string yang dimulai dengan digit, dan berakhir dengan ‘.’. Misalnya, 22Foobar. adalah awalan yang valid.
- Penggantian properti sistem dilakukan untuk nilai properti yang berisi $.
- Jika menggunakan loader kelas yang mengimplementasikan org.Apache.Juli.Antarmuka WebAppProperties (Loader Kelas Aplikasi Web Tomcat) maka penggantian properti juga dilakukan untuk $, $ dan $ yang diganti dengan nama aplikasi web, nama host dan nama layanan masing -masing.
- Secara default, penebang tidak akan mendelegasikan kepada orang tua mereka jika mereka memiliki penangan yang terkait. Ini dapat diubah per logger menggunakan LoggerName.properti useparenthandlers, yang menerima nilai boolean.
- Logger root dapat menentukan himpunan penangannya menggunakan .Properti Penangan.
- Secara default file log akan disimpan di sistem file selamanya. Ini dapat diubah per pawang menggunakan nama tangan.Properti Maxdays. Jika nilai yang ditentukan untuk properti adalah
Ada beberapa kelas implementasi tambahan, yang dapat digunakan bersama dengan yang disediakan oleh Java. Yang terkenal adalah org.Apache.Juli.FileHandler .
org.Apache.Juli.FileHandler mendukung buffering log. Buffering tidak diaktifkan secara default. Untuk mengonfigurasinya, gunakan properti bufferSize dari penangan. Nilai 0 menggunakan buffering default sistem (biasanya buffer 8k akan digunakan). Nilai 0 menggunakan bufferedOutputStream dengan nilai yang ditentukan tetapi perhatikan bahwa buffering default sistem juga akan diterapkan.
Contoh logging.File properti yang akan ditempatkan di $ catalina_base/conf:
penangan = 1Catalina.org.Apache.Juli.FileHandler, \ 2localhost.org.Apache.Juli.FileHandler, \ 3Manager.org.Apache.Juli.FileHandler, \ java.util.logging.Consolhandler .penangan = 1Catalina.org.Apache.Juli.FileHandler, Java.util.logging.Consolhandler ########################################################. # Menjelaskan info konfigurasi tertentu untuk penangan. ########################################################### 1catalina.org.Apache.Juli.FileHandler.Level = Fine 1Catalina.org.Apache.Juli.FileHandler.direktori = $/log 1catalina.org.Apache.Juli.FileHandler.awalan = katalina. 2localhost.org.Apache.Juli.FileHandler.level = fine 2localhost.org.Apache.Juli.FileHandler.direktori = $/log 2Localhost.org.Apache.Juli.FileHandler.awalan = localhost. 3Manager.org.Apache.Juli.FileHandler.Level = 3Manager halus.org.Apache.Juli.FileHandler.direktori = $/log 3Manager.org.Apache.Juli.FileHandler.awalan = manajer. 3Manager.org.Apache.Juli.FileHandler.BufferSize = 16384 Java.util.logging.Consolhandler.level = java halus.util.logging.Consolhandler.formatter = java.util.logging.SimpleFormatter #######################################################. # Memberikan kontrol ekstra untuk setiap pencatat. #########################################################.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].level = info org.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].penangan = \ 2localhost.org.Apache.Juli.FileHandler org.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].[/Pengelola].level = info org.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].[/Pengelola].penangan = \ 3Manager.org.Apache.Juli.FileHandler # Misalnya, atur org.Apache.Catalina.util.LifeCyclebase Logger ke Log # Setiap komponen yang memperluas keadaan perubahan siklus hidup: #org.Apache.Catalina.util.Lifecyclebase.level = baik -baik saja
Contoh logging.Properti untuk aplikasi web servlet-arang ditempatkan di web-inf/kelas di dalam aplikasi web:
penangan = org.Apache.Juli.FileHandler, Java.util.logging.Consolhandler ########################################################. # Menjelaskan info konfigurasi tertentu untuk penangan. #########################################################.Apache.Juli.FileHandler.level = org halus.Apache.Juli.FileHandler.direktori = $/log org.Apache.Juli.FileHandler.awalan = $. Jawa.util.logging.Consolhandler.level = java halus.util.logging.Consolhandler.formatter = java.util.logging.Informatter sederhana
Referensi Dokumentasi
Lihat sumber daya berikut untuk informasi tambahan:
- Apache Tomcat Javadoc untuk org.Apache.Paket Juli.
- Oracle Java 6 Javadoc untuk Java.util.Paket logging.
Pertimbangan untuk Penggunaan Produksi
Anda mungkin ingin mencatat hal -hal berikut:
- Pertimbangkan untuk menghapus Consolhandler dari konfigurasi. Secara default (terima kasih kepada .Pengaturan Penangan) Logging pergi baik ke FileHandler dan ke konsolhandler . Output dari yang terakhir biasanya ditangkap ke dalam file, seperti Catalina.keluar . Dengan demikian Anda berakhir dengan dua salinan dari pesan yang sama.
- Pertimbangkan untuk menghapus FileHandler S untuk aplikasi yang tidak Anda gunakan. E.G., yang satu untuk host-manager .
- Penangan secara default menggunakan pengkodean default sistem untuk menulis file log. Itu dapat dikonfigurasi dengan properti pengkodean. Lihat Javadoc untuk detailnya.
- Pertimbangkan untuk mengkonfigurasi log akses.
Menggunakan log4j
Bagian ini menjelaskan cara mengkonfigurasi tomcat untuk menggunakan log4j daripada java.util.Pencatatan untuk semua penebangan internal Tomcat.
Catatan: Langkah -langkah yang dijelaskan di bagian ini diperlukan saat Anda ingin mengkonfigurasi ulang Tomcat untuk menggunakan Apache Log4j untuk penebangannya sendiri. Langkah -langkah ini bukan dibutuhkan jika Anda hanya ingin menggunakan log4j di aplikasi web Anda sendiri. – Dalam hal ini, cukup letakkan log4j.JAR dan LOG4J.Properti ke dalam web-inf/lib dan web-inf/kelas aplikasi web Anda.
Langkah -langkah berikut menjelaskan mengkonfigurasi log4j untuk mengeluarkan penebangan internal Tomcat.
- Buat file yang disebut log4j.Properti dengan konten berikut dan simpan ke $ CATALINA_BASE/LIB
log4j.rootlogger = info, catalina # tentukan semua appenders log4j.appender.Catalina = org.Apache.log4j.DailyrollingFileAppender LOG4J.appender.Catalina.File = $/log/Catalina log4j.appender.Catalina.Append = true log4j.appender.Catalina.Encoding = UTF-8 # roll-over log sekali sehari log4j.appender.Catalina.DatePattern = '.'yyyy-mm-dd'.log 'log4j.appender.Catalina.tata letak = org.Apache.log4j.POLATLAYOUT LOG4J.appender.Catalina.tata letak.Konversionpattern = %d [ %t] %-5p %c- %m %n log4j.appender.Localhost = org.Apache.log4j.DailyrollingFileAppender LOG4J.appender.Localhost.File = $/log/localhost log4j.appender.Localhost.Append = true log4j.appender.Localhost.Encoding = UTF-8 LOG4J.appender.Localhost.DatePattern = '.'yyyy-mm-dd'.log 'log4j.appender.Localhost.tata letak = org.Apache.log4j.POLATLAYOUT LOG4J.appender.Localhost.tata letak.Konversionpattern = %d [ %t] %-5p %c- %m %n log4j.appender.Manajer = org.Apache.log4j.DailyrollingFileAppender LOG4J.appender.PENGELOLA.File = $/log/manajer log4j.appender.PENGELOLA.Append = true log4j.appender.PENGELOLA.Encoding = UTF-8 LOG4J.appender.PENGELOLA.DatePattern = '.'yyyy-mm-dd'.log 'log4j.appender.PENGELOLA.tata letak = org.Apache.log4j.POLATLAYOUT LOG4J.appender.PENGELOLA.tata letak.Konversionpattern = %d [ %t] %-5p %c- %m %n log4j.appender.Host-manager = org.Apache.log4j.DailyrollingFileAppender LOG4J.appender.Host-Manager.File = $/log/host-manager log4j.appender.Host-Manager.Append = true log4j.appender.Host-Manager.Encoding = UTF-8 LOG4J.appender.Host-Manager.DatePattern = '.'yyyy-mm-dd'.log 'log4j.appender.Host-Manager.tata letak = org.Apache.log4j.POLATLAYOUT LOG4J.appender.Host-Manager.tata letak.Konversionpattern = %d [ %t] %-5p %c- %m %n log4j.appender.Konsol = org.Apache.log4j.ConsoleAppender LOG4J.appender.MENGHIBUR.Encoding = UTF-8 LOG4J.appender.MENGHIBUR.tata letak = org.Apache.log4j.POLATLAYOUT LOG4J.appender.MENGHIBUR.tata letak.Konversionpattern = %d [ %t] %-5p %c- %m %n # Konfigurasi log logger mana yang mana appenders log4j.logger.org.Apache.Catalina.inti.Containerbase.[Catalina].[localhost] = info, localhost log4j.logger.org.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].[/manager] = \ info, manajer log4j.logger.org.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].[/host-manager] = \ info, host-manager
- Unduh log4j (tomcat membutuhkan v1.2.X).
- Unduh atau Bangun Tomcat-Juli.Jar dan Tomcat-Juli-Adapters.Jar yang tersedia sebagai komponen “ekstra” untuk Tomcat. Lihat dokumentasi komponen tambahan untuk detailnya. Tomcat-juli ini.Jar berbeda dari yang default. Ini berisi implementasi logging Apache Commons lengkap dan dengan demikian dapat menemukan keberadaan log4j dan mengkonfigurasi dirinya sendiri.
- Jika Anda ingin mengonfigurasi Tomcat untuk menggunakan log4j secara global:
- Letakkan log4j.Jar dan Tomcat-Juli-Adapters.Jar dari “ekstra” menjadi $ catalina_home/lib .
- Ganti $ catalina_home/bin/tomcat-juli.Jar dengan Tomcat-juli.Jar dari “ekstra”.
- Jika Anda menjalankan Tomcat dengan $ CATALINA_HOME dan $ CATALINA_BASE terpisah dan ingin mengkonfigurasi untuk menggunakan Log4j hanya dalam satu $ Catalina_Base:
- Buat $ CATALINA_BASE/BIN dan $ CATALINA_BASE/LIB Directory jika tidak ada.
- Letakkan log4j.Jar dan Tomcat-Juli-Adapters.Jar dari “ekstra” menjadi $ catalina_base/lib
- Letakkan Tomcat-Juli.Jar dari “ekstra” sebagai $ catalina_base/bin/tomcat-juli.stoples
- Jika Anda menjalankan dengan manajer keamanan, Anda perlu mengedit $ CATALINA_BASE/CONF/CATALINA.file kebijakan untuk menyesuaikannya menggunakan salinan Tomcat-juli yang berbeda.stoples.
Catatan: Ini berfungsi karena perpustakaan, jika ada di $ catalina_base, dimuat dalam preferensi ke perpustakaan yang sama di $ Catalina_Home .
Catatan: Tomcat-Juli.Jar dimuat dari $ catalina_base /bin bukan $ catalina_base /lib karena dimuat sebagai bagian dari proses bootstrap dan semua kelas bootstrap dimuat dari bin.
Konfigurasi log4j ini mencerminkan java default.util.Pengaturan logging yang dikirimkan dengan Tomcat: baik manajer dan aplikasi host-manager mendapatkan file log individual, dan yang lainnya pergi ke “Catalina.Log “File Log. Setiap file digulung sekali sehari.
Anda dapat (dan harus) lebih pilih -pilih tentang paket mana yang akan dimasukkan ke dalam logging. Tomcat mendefinisikan penebang dengan nama mesin dan host. Misalnya, untuk log Localhost Catalina yang lebih rinci, tambahkan ini ke akhir log4j.properti di atas. Perhatikan bahwa ada masalah yang diketahui dengan menggunakan konvensi penamaan ini (dengan tanda kurung persegi) di file konfigurasi berbasis LOG4J XML, jadi kami sarankan Anda menggunakan file properti seperti yang dijelaskan hingga versi LOG4J di masa mendatang memungkinkan konvensi ini.
log4j.logger.org.Apache.Catalina.inti.Containerbase.[Catalina].[localhost] = debug log4j.logger.org.Apache.Catalina.core = debug log4j.logger.org.Apache.Catalina.sesi = debug
Berhati -hatilah: Tingkat debug akan menghasilkan megabyte logging dan startup Tomcat yang lambat. Level ini harus digunakan dengan hemat ketika debugging operasi tomcat internal diperlukan.
Aplikasi web Anda tentu harus menggunakan konfigurasi log4j mereka sendiri. Ini valid dengan konfigurasi di atas. Anda akan menempatkan log4j serupa.File Properti di Direktori Web-Inf/Kelas Aplikasi Web Anda, dan Log4JX.y.z.toples ke web-inf/lib. Kemudian tentukan logging level paket Anda. Ini adalah pengaturan dasar dari log4j yang * tidak * memerlukan logging commons, dan Anda harus berkonsultasi dengan dokumentasi log4j untuk lebih banyak opsi. Halaman ini dimaksudkan hanya sebagai panduan bootstrap.
- Ini memperlihatkan perpustakaan log4j ke aplikasi web melalui classloader umum. Lihat Dokumentasi Pemuatan Kelas untuk detailnya. Karena itu, aplikasi web dan perpustakaan menggunakan perpustakaan logging Apache Commons cenderung secara otomatis memilih log4j sebagai implementasi logging yang mendasarinya.
- Jawa.util.API logging masih tersedia untuk aplikasi web yang menggunakannya secara langsung. $/Conf/logging.file properti masih dirujuk oleh skrip startup tomcat. Untuk informasi lebih lanjut, lihat subbagian pengantar ke halaman ini. Penghapusan $/conf/logging.file properti, disebut sebagai salah satu langkah di atas, menyebabkan java.util.Masuk ke Fallback ke konfigurasi default untuk JRE, yaitu menggunakan consolhandler dan karenanya tidak membuat file log standar apa pun. Anda harus mengonfirmasi bahwa semua file log Anda sedang dibuat oleh log4j sebelum menonaktifkan mekanisme standar.
- Itu Access Log Valve Dan ExtendedAccessLogValve Gunakan implementasi logging mandiri mereka sendiri, jadi mereka tidak dapat dikonfigurasi untuk menggunakan log4j. Lihat katup untuk detail konfigurasi tertentu.
Komentar
Melihat: Bagian komentar ini mengumpulkan saran Anda tentang peningkatan dokumentasi untuk Apache Tomcat.
Jika Anda mengalami masalah dan membutuhkan bantuan, baca Temukan Halaman Bantuan dan ajukan pertanyaan Anda di milis Tomcat-Users. Jangan ajukan pertanyaan seperti itu di sini. Ini bukan bagian tanya jawab.
Sistem komentar Apache dijelaskan di sini. Komentar dapat dihapus oleh moderator kami jika mereka diimplementasikan atau dianggap tidak valid/di luar topik.
Konfigurasi Tomcat Log4J Langkah demi Langkah
Perpustakaan dan konfigurasi logging juli tersedia secara default dengan penginstal tomcat. Untuk menggunakan log4j untuk penebangan internal tomcat, Anda harus mengganti perpustakaan juli yang ada dengan integrasi log4j-juli.
1. Hapus Perpustakaan Juli yang ada (Catalina_Home/bin/Tomcat-juli.file jar) dan file konfigurasi logging tomcat java (catalina_home/conf/logging.properti).
2. Unduh Perpustakaan Juli Log4j Tomcat (Tomcat-Juli.toples) dari unduhan tomcat’ Bagian ekstra (http: // tomcat.Apache.org/download-70.CGI). Tempatkan file yang diunduh ke direktori Catalina_Home/bin.
3. Unduh Perpustakaan Tomcat Juli Adapters (Tomcat-Juli-Adapters.toples) dari unduhan tomcat’ Bagian ekstra. Tempatkan file ini di direktori Catalina_Home/Lib.
4. Unduh log4j (versi 1.2 atau lebih baru), dan tempatkan file perpustakaan yang diunduh ke direktori Catalina_Home/Lib.
5. Buat file konfigurasi log4j di lokasi berikut: CATALINA_HOME/LIB/LOG4J.properti. Periksa di bawah konfigurasi log4J yang cocok dengan konfigurasi logging Java default.
6. Restart Tomcat.
File Konfigurasi Log4J yang cocok dengan pengaturan logging Tomcat default:
log4j.rootlogger = info, catalina # tentukan semua appenders log4j.appender.Catalina = org.Apache.log4j.DailyrollingFileAppender LOG4J.appender.Catalina.File = $/log/Catalina. log4j.appender.Catalina.Append = true log4j.appender.Catalina.Encoding = UTF-8 # roll-over log sekali sehari log4j.appender.Catalina.DatePattern = '.'yyyy-mm-dd'.log 'log4j.appender.Catalina.tata letak = org.Apache.log4j.POLATLAYOUT LOG4J.appender.Catalina.tata letak.Konversionpattern = %d [ %t] %-5p %c- %m %n log4j.appender.Localhost = org.Apache.log4j.DailyrollingFileAppender LOG4J.appender.Localhost.File = $/log/localhost. log4j.appender.Localhost.Append = true log4j.appender.Localhost.Encoding = UTF-8 LOG4J.appender.Localhost.DatePattern = '.'yyyy-mm-dd'.log 'log4j.appender.Localhost.tata letak = org.Apache.log4j.POLATLAYOUT LOG4J.appender.Localhost.tata letak.Konversionpattern = %d [ %t] %-5p %c- %m %n log4j.appender.Manajer = org.Apache.log4j.DailyrollingFileAppender LOG4J.appender.PENGELOLA.File = $/log/manager. log4j.appender.PENGELOLA.Append = true log4j.appender.PENGELOLA.Encoding = UTF-8 LOG4J.appender.PENGELOLA.DatePattern = '.'yyyy-mm-dd'.log 'log4j.appender.PENGELOLA.tata letak = org.Apache.log4j.POLATLAYOUT LOG4J.appender.PENGELOLA.tata letak.Konversionpattern = %d [ %t] %-5p %c- %m %n log4j.appender.Host-manager = org.Apache.log4j.DailyrollingFileAppender LOG4J.appender.Host-Manager.File = $/log/host-manager. log4j.appender.Host-Manager.Append = true log4j.appender.Host-Manager.Encoding = UTF-8 LOG4J.appender.Host-Manager.DatePattern = '.'yyyy-mm-dd'.log 'log4j.appender.Host-Manager.tata letak = org.Apache.log4j.POLATLAYOUT LOG4J.appender.Host-Manager.tata letak.Konversionpattern = %d [ %t] %-5p %c- %m %n log4j.appender.Konsol = org.Apache.log4j.ConsoleAppender LOG4J.appender.MENGHIBUR.Encoding = UTF-8 LOG4J.appender.MENGHIBUR.tata letak = org.Apache.log4j.POLATLAYOUT LOG4J.appender.MENGHIBUR.tata letak.Konversionpattern = %d [ %t] %-5p %c- %m %n # Konfigurasi log logger mana yang mana appenders log4j.logger.org.Apache.Catalina.inti.Containerbase.[Catalina].[localhost] = info, localhost log4j.logger.org.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].[/manager] = info, manajer log4j.logger.org.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].[/host-manager] = info, host-manager
Tomcat sekarang akan menggunakan Log4j untuk semua penebangan internal.
Untuk memahami konfigurasi di atas Periksa detail di bawah ini untuk mendapatkan tampilan yang jelas
Elemen konfigurasi untuk log4j’S POLATLAYOUT
%d Tanggal Penebangan. Anda dapat menentukan pola tanggal dalam braket keriting ( %d) %c nama kelas yang sepenuhnya memenuhi syarat (gunakan %c untuk mencetak hanya nama kelas sederhana) %t nama utas di mana logging terjadi %f fileNeName dari peristiwa logging %p level level %l nomor line dari poris logging %m yang sebenarnya)
Berikut adalah beberapa contoh pola dan entri log yang mereka hasilkan:
%d [ %t] %-5p %c- %m %n 2011-09-07 14: 07: 41.509 [utama] info myntclass-mengeksekusi.
%5p [%t] (%f:%l) -%m%n info [main] (myntclass.Java: 12) - Eksekusi.
Untuk info lebih lanjut tentang LOG4J Checkout di bawah tautan:
http: // logging.Apache.org/log4j/indeks.html
Dalam hal © © Hak Cipta atau Masalah Kredit Hilang Harap periksa halaman Hak Cipta untuk Resolusi Lebih Cepat.
Seperti artikelnya. Bagikan ini.
- Klik untuk mencetak (dibuka di jendela baru)
- Klik untuk mengirim email ke tautan ke teman (dibuka di jendela baru)
- Klik untuk berbagi di Reddit (dibuka di jendela baru)
- Klik untuk berbagi di Pinterest (dibuka di jendela baru)
- Klik untuk berbagi di LinkedIn (dibuka di jendela baru)
- Klik untuk berbagi di whatsapp (dibuka di jendela baru)
- Klik untuk berbagi di Twitter (dibuka di jendela baru)
- Klik untuk berbagi di Facebook (dibuka di jendela baru)
- Klik untuk berbagi di Tumblr (dibuka di jendela baru)
- Klik untuk berbagi di saku (dibuka di jendela baru)
- Klik untuk berbagi di telegram (dibuka di jendela baru)
- Klik untuk berbagi di Skype (dibuka di jendela baru)
How-To: Mengkonfigurasi Tomcat 9 untuk masuk melalui log4j2
Bagaimana Anda bisa mengarahkan kembali penebangan internal Tomcat 9 (Catalina dan LocalHost) ke Log4J2? Meskipun ada banyak pemandu yang tersedia untuk versi yang lebih lama dari Tomcat dan Log4J, saya tidak dapat menemukan apa pun yang “lengkap” mengenai Tomcat 9 dan Log4J2; Dokumentasi Apache Tomcat 9 menunjuk ke “instruksi yang disediakan oleh kerangka kerja logging alternatif”, dan dokumentasi Apache Log4J menyatakan (nama jar dalam 2. dikoreksi):
- Membuat satu set direktori di Catalina Home bernama Log4J2/Lib dan Log4J2/Conf.
- Menempatkan log4j-api-2.12.0.JAR, LOG4J-CORE-2.12.0.Jar, dan log4j-appserver-2.12.0.Jar di direktori log4j2/lib.
- Membuat file bernama log4j2-tomcat.xml, log4j2-tomcat.JSON, LOG4J2-TOMCAT.YAML, LOG4J2-TOMCAT.yml, atau log4j2-tomcat.Properti di Direktori Log4J2/Conf.
- Buat atau ubah setenv.SH di direktori Tomcat Bin untuk memasukkan classpath = $ catalina_home/log4j2/lib/*: $ catalina_home/log4j2/conf
Tapi apa yang harus dimasukkan ke dalam log4j2-tomcat itu.* file konfigurasi?
tanya 5 Jul 2019 jam 12:33
682 1 1 Lencana Emas 6 6 Lencana Perak 17 17 Lencana Perunggu
2 Jawaban 2
Saya menemukan file Contoh Properti di Dokumentasi Apache Tomcat 7, tetapi karena ini dimaksudkan untuk digunakan dengan LOG4J 1.x, saya harus menyesuaikannya dengan sintaks file properti log4j2. Inilah hasilnya:
# 'Status' mengacu pada pesan log dari log4j2 sendiri monitorInterval = 30 Status = Warn Properti.Loglevel.Catalina = properti info.Loglevel.localhost = properti info.LayoutPattern.Catalina = %d %-5p [ %t] %-22.22c %m %n properti.LayoutPattern.localhost = %d %-5p [ %t] %-30.30c %m %n # roll-over log sebulan sekali menggunakan crontriggerpolicy. Properti.FileDatePattern.Catalina = %d Properti.FileDatePattern.Properti LocalHost = %D.CRONTRIGGERSCHEDULE.Catalina = 0 0 0 1 * ? Properti.CRONTRIGGERSCHEDULE.localhost = 0 0 0 1 * ? ## Appenders # n.B.: - Tidak perlu menentukan 'appenders = catalina, localhost, konsol' # karena pengidentifikasi ini tidak mengandung '.'Karakter. # - 'Kebijakan' Sub -Komponen 'Kebijakan' dan 'Cron' dipilih secara sewenang -wenang; Jenis aktual ditentukan melalui atribut 'tipe'. # - 'DirectWriterOlloverStrategy' digunakan secara otomatis karena tidak ada 'nama file' yang ditentukan. appender.Catalina.type = rollingfile appender.Catalina.Nama = RollingFile-Catalina Appender.Catalina.FilePattern = $/log/Catalina.$.log appender.Catalina.tata letak.type = PatternLayout Appender.Catalina.tata letak.pola = $ appender.Catalina.kebijakan.ketik = kebijakan appender.Catalina.kebijakan.cron.type = crontriggeringpolicy appender.Catalina.kebijakan.cron.jadwal = $ appender.Catalina.kebijakan.cron.EvalueuteNstArtup = True Appender.Catalina.FilePermissions = RW-R ----- Appender.Catalina.FileOwner = Tomcat Appender.Catalina.FileGroup = ADM Appender.Localhost.type = rollingfile appender.Localhost.Nama = RollingFile-Localhost Appender.Localhost.filepattern = $/log/localhost.$.log appender.Localhost.tata letak.type = PatternLayout Appender.Localhost.tata letak.pola = $ appender.Localhost.kebijakan.ketik = kebijakan appender.Localhost.kebijakan.cron.type = crontriggeringpolicy appender.Localhost.kebijakan.cron.jadwal = $ appender.Localhost.kebijakan.cron.EvalueuteNstArtup = True Appender.Localhost.FilePermissions = RW-R ----- Appender.Localhost.FileOwner = Tomcat Appender.Localhost.FileGroup = ADM # uncomment jika Anda ingin tetap masuk ke Catalina.keluar setelah log4j2 mengambil alih. #lamping.MENGHIBUR.type = konsol #appender.MENGHIBUR.name = stdout #lamping.MENGHIBUR.tata letak.type = PatternLayout ## Konfigurasikan log Logger mana yang mana appenders rootlogger.level = $ rootlogger.AppenderRef.Catalina.ref = rollingfile-katalina #rootlogger.AppenderRef.stdout.ref = stdout # di sini, pengidentifikasi memang berisi '.'Karakter, jadi kita harus menentukan daftar. Loggers = org.Apache.Catalina.inti.Containerbase.[Catalina].[LocalHost] Logger.org.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].name = LocalHost Logger.org.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].Level = $ Logger.org.Apache.Catalina.inti.Containerbase.[Catalina].[Localhost].AppenderRef.Localhost.Ref = RollingFile-Localhost
Alasan utama saya menggunakan log4j2 adalah untuk bisa mendapatkan rotasi log bulanan, tetapi Anda dapat dengan mudah menyesuaikan semua yang Anda suka, bahkan tanpa memulai kembali Tomcat.