Saya memiliki program yang membutuhkan argumen untuk memungkinkan debug tambahan dari perangkat keras yang kami gunakan.
Log hanya ditulis ke standar di luar jadi biasanya kita hanya pipa standar ke file yaitu ./myprog -AddDebug> myfile.txt, namun kita sekarang diharuskan untuk menjaga pencatatan ini diaktifkan untuk menemukan kesalahan yang biasanya tidak kita lakukan melakukannya mencari cara untuk memutar log untuk memastikan ruang disk server tidak terbiasa.
Saya telah menggunakan fungsi logrotate bawaan di linux dengan menambahkan file config ke /etc/logrotate.d/mytrace yang berisi yang berikut:
/home/myprog/mytrace.txt
{
rotate 5
size 2M
copytruncate
olddir trace_archive
}
Ketika saya menjalankan / usr / sbin / logrotate /etc/logrotate.conf file jejak dipindahkan ke archvie Namun, yang asli dibuat ulang tapi kemudian jelas pipa itu hilang sehingga file tidak lagi ditulis. Saya kemudian mencoba mengganti create
dengan copytruncate
yang masih menempatkan file dalam arsip tetapi file asli terus bertambah.
Masalah kedua, file hanya diarsipkan ketika saya secara manual menjalankan fungsi logrotate itu tidak otomatis menyala ketika ukuran file tercapai.
Bantuan apa pun yang Anda berikan pada kedua masalah akan sangat dihargai.
MEMPERBARUI
Saya sudah berhasil membuatnya sebagian berfungsi, untuk mendapatkan copytruncate untuk bekerja file harus dibuka dalam mode append jadi alih-alih ./myprog -AddDebug > myfile.txt
ini harus diubah menjadi ./myprog -AddDebug >> myfile.txt
.
Satu-satunya masalah saya sekarang adalah, itu hanya akan melakukan rotasi jika saya menjalankan logrotate -v /etc/logrotate.conf
jadi bagaimana saya bisa melakukan ini secara otomatis?
Sepertinya saya harus membuat cronjob secara manual yang berjalan setiap beberapa menit untuk memastikan log diputar, tidak ditangani secara otomatis.
Terima kasih
logger
adalah solusi terbaik, dan saya ingin menyebutkannewsyslog
bahwa sebenarnya memutar file syslog.Terima kasih semuanya atas bantuan Anda.
Saya telah menggunakan rotate log standar yang dibangun ke dalam OS dan mengatur cronjob untuk dijalankan setiap 5 menit, dan ini tampaknya bekerja dengan cara yang saya inginkan.
Terima kasih
sumber