همانطور که می دانید لاگ های استریسک در فایل full ذخیره میشوند که گاها این فایل بسیار سنگین شده و باز کردن آن بسیار از سیستم ریسورس میگیرد و باعث اختلال در سیستم میشود.


اگر بخواهیم لاگ فایلهای سرویس استریسک (فایل های full و message و master.csv و ..) را بر اساس هر روز (بصورت روزانه در فایل های جداگانه و نه در یک فایل) ذخیره کنیم (مثلا : Master.csv-20210505.gz Master.csv-20210507.gz ) و همچنین فایلها را زیپ کرده که فضای کمتری اشغال کند و همچنین در پوشه ی لاگها، همه لاگ فایل های مربوط به 25 روز قبل را پاک کنیم و فقط 25 روز آخر را نگه داریم ( آن هم بصورت فشرده که فضای کمی اشغال کنه)، از سرویس logrotate استفاده میکنیم :



برای فشرده سازی و ذخیره روزانه در فایل مجزا و همچنین نگه داشتن لاگهای 25 روز آخر، کافیه که از سرویس logrotate استفاده کنید
در صورتی که این سرویس رو سرورتان نصب نبود ابتدا آن را نصب کنید :
کد:
# yum install logrotate




و برای استریسک فایل کانفیگ زیر رو ایجاد کنید :
کد:
# vim /etc/logrotate.d/asterisk




و محتویات زیر را در آن قرار دهید :
کد:
/var/log/asterisk/queue_log {
su root root
weekly
missingok
rotate 10
notifempty
sharedscripts
create 0644
}

/var/log/asterisk/messages
/var/log/asterisk/event_log
/var/log/asterisk/full
/var/log/asterisk/cdr-csv/Master.csv{
su root root
daily
missingok
rotate 25
compress
notifempty
delaycompress
sharedscripts
create 0644
postrotate
/usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null
## systemctl restart asterisk
endscript
}




همچنین اگر فقط بخواهید فایلهای مربوط به 25 روز قبل را پاک کنید می توانید تنها از کرون استفاده کنید. شما باید به ازای هر سرویسی که دارید یه خط در cronjob تعریف کنید.


مثلا برای لاگ های سرویس استریسک، ابتدا کامند زیر را اجرا کنید :
کد:
crontab -e




و سپس خط های زیر را در پایان فایل اضافه کنید:
کد:
@daily find /var/log/asterisk/ -type f -mtime +25 | xargs rm -f