Saya memiliki server Tomcat yang membuat log akses melalui katup ( org.apache.catalina.valves.FastCommonAccessLogValve ). Katup ini menangani pemindahan file log akses, tetapi tidak memampatkan atau menghapusnya setelah beberapa waktu.
Untuk saat ini, saya memiliki tugas cron yang digunakan find [...] -mtime +30 [...]
untuk mengompresi dan menghapus log. Saya lebih suka menggunakan logrotate, sehingga rotasi log berada di tempat terpusat untuk semua log. Saya tidak suka memiliki solusi terpisah hanya untuk Tomcat.
Saya mencoba membaca dokumentasi logrotate, tetapi saya masih agak bingung. Bisakah saya menggunakan logrotate hanya untuk kompres dan pembersihan file log? Bagaimana saya melakukannya?
Atau membalikkan masalah, apakah ada katup akses log Tomcat yang akan mengompres dan membersihkan file log?
Terima kasih atas bantuanmu !
Jawaban:
Cukup sederhana yang pernah saya lihat bekerja seperti ini.
Buat file di /etc/logrotate.d disebut tomcat yang berisi yang berikut: -
Ini berjalan setiap hari , kompres file, dan simpan selama 7 hari ( putar 7 ). copytruncate berarti bahwa itu akan menyalin kemudian memotong file asli sehingga tidak perlu me-restart kucing jantan. hilang ok tidak akan kesalahan jika tidak ada.
Access.log Valve dapat diubah menjadi tidak memutar dengan menambahkan rotatable = false: -
sumber
Skrip TimP yang dimodifikasi - Ditambahkan menghapus file yang sangat lama, menambahkan pemindaian untuk file terkompresi yang lama.
sumber
Saya tidak ingin mengubah konfigurasi Tomcat, jadi buat skrip yang mengkompres file yang diputar
sumber
Sangat sederhana. Beri tahu logrotate file mana yang ingin Anda putar secara spesifik.
nocreate
memberitahu logrotate untuk tidak membuat ulang file kosong setelah memindahkan yang lama (jika Anda memutar file menjadi subfolder).sumber
Untuk kompresi local_access_log.YYYY-MM-DD.txt saya menulis skrip ini setelah melihat posting ini: -
sumber
Solusi sederhana disediakan di sini. Ini juga termasuk opsi unggah s3.
https://yottabrain.org/tomcat/tomcat-log-backup/
sumber