Dalam konfigurasi saya, saya memiliki rsyslog yang bertanggung jawab untuk mengikuti perubahan /home/user/my_app/shared/log/unicorn.stderr.logpenggunaan 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 -9rsyslog 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 ) ...?