Dalam konfigurasi saya, saya memiliki rsyslog yang bertanggung jawab untuk mengikuti perubahan /home/user/my_app/shared/log/unicorn.stderr.log
penggunaan imfile
. Konten dikirim ke server logging jarak jauh lain menggunakan TCP.
Ketika file log diputar, rsyslog berhenti mengirim data ke server jauh.
Saya mencoba memuat ulang rsyslog, mengirim sinyal HUP dan memulai ulang semuanya, tetapi tidak ada yang berhasil.
Satu-satunya cara saya dapat menemukan bahwa itu benar-benar berfungsi adalah kotor:
- hentikan layanan, hapus file stat rsyslog dan mulai rsyslog lagi. Semua itu di kait postrotate di file logrotate saya.
kill -9
rsyslog dan mulai lagi dari awal.
Apakah ada cara yang tepat bagi saya untuk melakukan ini tanpa menyentuh rsyslog internal?
File rsyslog
$ ModLoad immark $ ModLoad imudp $ ModLoad imtcp $ ModLoad imuxsock $ ModLoad imklog $ ModLoad imfile $ template WithoutTimeFormat, "[environment] [% syslogtag%] -% msg%" $ WorkDirectory / var / spool / rsyslog $ InputFileName /home/user/my_app/shared/log/unicorn.stderr.log $ InputFileTag unicorn-stderr $ InputFileStateFile stat-unicorn-stderr $ Info InputFileSeverity $ InputFileFacility local8 $ InputFilePollInterval 1 $ InputFilePersistStateInterval 1 $ InputRunFileMonitor # Teruskan ke server jauh jika $ syslogtag mengandung 'apache-' maka @@ my_server: 5000; TanpaTimeFormat : syslogtag, mengandung, "apache-" ~ *. * @@ my_server: 5000; SyslFormat
File logrotate
/home/user/my_app/shared/log/*.log { harian missingok dateext putar 30 kompres pemberitahuan ekstensi gz copytruncate buat 640 pengguna pengguna skrip yang dibagikan pasca-putar (hentikan rsyslog && rm / var / spool / rsyslog / stat- * && mulai rsyslog 2> & 1) || benar naskah akhir }
FYI, file dapat dibaca untuk pengguna rsyslog, server saya dapat dijangkau dan file log lainnya yang tidak diputar pada siklus yang sama terus dilacak dengan benar.
Saya menjalankan Ubuntu 12.04.
post-rotate
(yang bukan merupakan hal) sebagai gantinyapostrotate
, karena skrip logrotate asli yang Anda seharusnya bekerja dengan baik dengan rsyslog (jika skrip postrotate telah berjalan ) ...?