Saya memiliki server RHEL7 dengan Apache Tomcat 7.0 diinstal dan setelah pembaruan baru-baru ini ke RHEL7.1 semua penebangan ke $ {catalina.base} /logs/catalina.out dihentikan. Namun saya menerima log di dalam journalctl.
Jika saya mengetik jurnalctl -u tomcat saya mendapatkan logging. Apakah ada cara bagi saya untuk mendapatkan logging juga untuk catalina.out?
cat /usr/share/tomcat/logs/catalina.out
no output
journalctl -u tomcat
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
Aug 20 10:07:14 server.example.com server[26435]: at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
...
rhel
rsyslog
tomcat
systemd-journald
xterrez
sumber
sumber
jinfo -sysprops 26435 | grep catalina.base catalina.base = /usr/share/tomcat
stat /usr/share/tomcat/logs/catalina.out
stat /usr/share/tomcat/logs/catalina.out File: ‘/usr/share/tomcat/logs/catalina.out’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 1013845 Links: 1 Access: (0660/-rw-rw----) Uid: ( 91/ tomcat) Gid: ( 91/ tomcat) Access: 2015-08-19 11:21:32.835211998 +0000 Modify: 2015-08-17 03:40:02.785809293 +0000 Change: 2015-08-17 03:40:02.785809293 +0000 Birth: -
Jawaban:
Jawaban Jamie benar bahwa Anda dapat memaksa rsyslog untuk mencatat apa yang terjadi dengan kucing jantan. Namun, itu tidak menjawab mengapa tomcat 7 pada rhel 7 tidak masuk ke catalina.out. Atau jika ya, mengapa log masuk ke catalina.out dan catalina dengan tanggal (jika Anda tidak menggunakan instalasi RPM).
Pertama, di masa lalu sekitar 7.0.42, skrip Red Hat menggunakan catalina.out karena skrip mereka meniru perilaku RHEL 6. Sejauh yang saya ketahui, mereka menggunakan "forking" untuk layanan tersebut
systemd
. Ketika 7.0.56 dirilis, mereka mengubah sepenuhnya dengan membuat skrip dan pembungkus baru di / usr / libexec / tomcat untuk memaksa tomcat untuk berjalan dalamsimple
mode alih-alihforked
, memungkinkan systemd untuk memiliki kontrol PID danstdout
danstderr
untuk pergi ke jurnal. Masih adacatalina.$DATE.log
file di dalam/var/log/tomcat
, tetapi informasinya lebih terbatas dari biasanyacatalina.out
.Kedua, mari kita lihat /etc/tomcat/logging.properties. Anda akan melihatnya memilah log dengan cara tertentu antara catalina, localhost, manajer, host-manager. Anda juga akan melihat bahwa ia memiliki dukungan fasilitas rsyslog juga, dan pada dasarnya bagaimana "berurusan" dengannya. Apa yang terjadi adalah
ConsoleHandler
dalam file itu. Mengubah itu akan mengubah perilaku log/var/log/tomcat
.journalctl -u tomcat
akan menunjukkan semua yang catalina.out seharusnya miliki. Sejauh yang saya ketahui, tanpa memodifikasi pembungkus Red Hat di / usr / libexec / tomcat, tidak ada cara yang pasti untuk membuat semuanya berjalan hanya dengan catalina.out. Jika Anda memang memodifikasi skrip tersebut dan pembaruan keluar, perubahan Anda akan ditimpa.Jika Anda ingin catalina.out pasti, pergi dengan konfigurasi contoh rsyslog Jamie. Ketahuilah bahwa itu tidak hanya akan mengisi itu, tetapi jurnal systemd juga akan memiliki informasi yang sama.
sumber
Membuat file baru yang
/etc/rsyslog.d/tomcat.conf
berisi dua baris berikutnya membantu saya:Setelah itu restart daemon rsyslog Anda:
sumber
Tampaknya sintaksis rsyslog berubah dengan versi yang lebih baru. Menjalankan 8.24.0 di RHEL 7.4, sintaks berikut ini
/etc/rsyslog.d/tomcat.conf
membuatnya berfungsi untuk saya:Kemudian, ketika Jaimie menunjukkan restart rsyslog diperlukan:
sumber