Seperti yang disebutkan oleh Zeeshan, opsi logrotate size
, minsize
, maxsize
adalah pemicu rotasi.
Untuk lebih menjelaskannya. Anda dapat menjalankan logrotate sesering yang Anda suka, tetapi kecuali ambang tercapai seperti ukuran file tercapai atau waktu yang sesuai berlalu, log tidak akan diputar.
Opsi ukuran tidak memastikan bahwa log yang diputar juga memiliki ukuran yang ditentukan. Untuk membuatnya mendekati ukuran yang ditentukan, Anda perlu cukup sering memanggil program logrotate. Ini penting.
Untuk file log yang dibangun dengan sangat cepat (misalnya dalam ratusan MB per hari), kecuali jika Anda ingin file tersebut berukuran sangat besar, Anda perlu memastikan logrotate sering dipanggil! ini penting.
Oleh karena itu, untuk menghentikan pengisian disk Anda dengan file log multi-gigabyte, Anda perlu memastikan logrotate cukup sering dipanggil, jika tidak, rotasi log tidak akan berfungsi sebaik yang Anda inginkan.
di Ubuntu, Anda dapat dengan mudah beralih ke rotasi per jam dengan memindahkan skrip /etc/cron.daily/logrotate ke /etc/cron.hourly/logrotate
Atau tambahkan
*/5 * * * * /etc/cron.daily/logrotate
Ke file /etc/crontab Anda. Untuk menjalankannya setiap 5 menit.
size
opsi mengabaikan opsi waktu harian, mingguan, bulanan. Tapi minsize &maxsize memperhitungkannya.
Halaman manual agak membingungkan di sana. Berikut penjelasan saya.
minsize
berputar hanya ketika file telah mencapai ukuran yang sesuai dan periode waktu yang ditetapkan telah berlalu. misalnya minsize 50MB + harianJika file mencapai 50MB sebelum waktu harian habis, file akan terus bertambah hingga hari berikutnya.
maxsize
akan berputar ketika log mencapai ukuran yang ditetapkan atau waktu yang sesuai telah berlalu. misalnya maxsize 50MB + harian. Jika file 50MB dan kami belum di hari berikutnya, log akan diputar. Jika file hanya 20MB dan kita roll ke hari berikutnya maka file akan dirotasi.
size
akan berputar ketika log> ukuran. Terlepas dari apakah per jam/harian/mingguan/bulanan ditentukan. Jadi jika Anda memiliki ukuran 100M - artinya ketika file log Anda> 100M log akan diputar jika logrotate dijalankan saat kondisi ini benar. Setelah diputar, log utama akan menjadi 0, dan proses berikutnya tidak akan menghasilkan apa-apa.
Jadi dalam kasus op. Secara khusus maks 50MB saya akan menggunakan sesuatu seperti berikut:
/var/log/logpath/*.log {
maxsize 50M
hourly
missingok
rotate 8
compress
notifempty
nocreate
}
Yang berarti dia akan membuat log maksimal 8 jam. Dan akan ada 8 dari mereka masing-masing tidak lebih dari 50MB. Karena dia mengatakan bahwa dia mendapatkan multi gigabyte setiap hari dan dengan asumsi mereka membangun pada tingkat yang cukup konstan, dan maxsize digunakan, dia akan berakhir dengan mendekati batas maksimum yang dicapai untuk setiap file. Jadi masing-masing kemungkinan akan mendekati 50MB. Mengingat volume yang dibuat, dia perlu memastikan bahwa logrotate dijalankan cukup sering untuk memenuhi ukuran target.
Karena saya telah menempatkan setiap jam di sana, kami membutuhkan logrotate untuk dijalankan minimal setiap jam. Tetapi karena mereka membangun untuk mengatakan 2 gigabyte per hari dan kami ingin 50MB ... dengan asumsi kecepatan konstan 83MB per jam. Jadi bisa dibayangkan jika kita menjalankan logrotate setiap jam, meskipun pengaturan maxsize ke 50 kita akan berakhir dengan log 83MB dalam kasus itu. Jadi dalam hal ini, setel lari ke setiap 30 menit atau kurang sudah cukup.
Pastikan logrotate dijalankan setiap 30 menit.
*/30 * * * * /etc/cron.daily/logrotate
Ini menentukan ukuran file log untuk memicu rotasi. Misalnya size 50M
akan memicu rotasi log setelah file berukuran 50MB atau lebih besar. Anda dapat menggunakan akhiran M
untuk megabita, k
untuk kilobyte, dan G
untuk gigabyte. Jika tidak ada akhiran yang digunakan, itu berarti byte. Anda dapat memeriksa contoh di bagian akhir. Ada tiga arahan yang tersedia size
, maxsize
, dan minsize
. Menurut halaman manual:
minsize size
Log files are rotated when they grow bigger than size bytes,
but not before the additionally specified time interval (daily,
weekly, monthly, or yearly). The related size option is simi-
lar except that it is mutually exclusive with the time interval
options, and it causes log files to be rotated without regard
for the last rotation time. When minsize is used, both the
size and timestamp of a log file are considered.
size size
Log files are rotated only if they grow bigger then size bytes.
If size is followed by k, the size is assumed to be in kilo-
bytes. If the M is used, the size is in megabytes, and if G is
used, the size is in gigabytes. So size 100, size 100k, size
100M and size 100G are all valid.
maxsize size
Log files are rotated when they grow bigger than size bytes even before
the additionally specified time interval (daily, weekly, monthly,
or yearly). The related size option is similar except that it
is mutually exclusive with the time interval options, and it causes
log files to be rotated without regard for the last rotation time.
When maxsize is used, both the size and timestamp of a log file are
considered.
Ini contohnya:
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail [email protected]
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}
Berikut penjelasan untuk kedua file /var/log/httpd/access.log
dan /var/log/httpd/error.log
. Mereka diputar setiap kali ukurannya bertambah lebih dari 100k, dan file log lama dikirimkan (tidak dikompresi) ke [email protected]
setelah melalui 5 putaran, bukannya dihilangkan. sharedscripts
artinya postrotate
skrip hanya akan dijalankan satu kali (setelah log lama dikompresi), tidak satu kali untuk setiap log yang diputar. Perhatikan bahwa tanda kutip ganda di sekitar nama file pertama di awal bagian ini memungkinkan logrotate memutar log dengan spasi di namanya. Aturan kutipan shell normal berlaku, dengan ,
, dan \
karakter didukung.