Rumah > Soal Jawab > teks badan
Log Nginx ditulis dalam fail Saya memerlukan Log Nginx setiap hari
Saya melihat banyak kaedah di Internet, semuanya adalah untuk menulis skrip dan memotong fail Log dalam format tetap
Tidak bolehkah Nginx melakukan pemotongan balak dengan sendirinya?
phpcn_u15822017-05-16 17:31:36
Sahkan cron sedang berjalan
service crond status
Ubah suai fail konfigurasi
vi /etc/crontab
Sahkan tugasan yang dijadualkan
vi /etc/cron.daily/logrotate
Tulis fail konfigurasi logrotate vi /etc/logrotate.d/nginx
/var/log/nginx/*.log { #指定转储周期为每天 daily missingok #指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份 rotate 5 #compress #delaycompress #如果是空文件的话,不转储 notifempty #create 640 root adm sharedscripts postrotate [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid` endscript }
Konfigurasi ujian
/usr/sbin/logrotate -f /etc/logrotate.d/nginx
怪我咯2017-05-16 17:31:36
Keperluan pengelogan pentadbir sistem sentiasa berubah demi kepentingannya yang ringan, Nginx benar-benar tidak bimbang tentang pengurusan log.
Halaman Wiki Rotasi Log Rasmi
Saya rasa anda juga telah menemuinya, anda boleh menggunakan skrip anda sendiri atau logrotate.
我想大声告诉你2017-05-16 17:31:36
fail log nginx tidak mempunyai fungsi putar. Jika anda tidak mengendalikannya, fail log akan menjadi lebih besar dan lebih besar Nasib baik, kami boleh menulis skrip pemotongan log nginx untuk memotong fail log secara automatik.
Langkah pertama ialah menamakan semula fail log Jangan risau tentang nginx tidak dapat mencari fail log dan kehilangan log selepas menamakan semula. Sebelum anda membuka semula fail log dengan nama asal, nginx masih akan menulis log pada fail yang anda namakan semula Linux bergantung pada deskriptor fail dan bukannya nama fail untuk mencari fail.
Langkah kedua ialah menghantar isyarat USR1 ke proses utama nginx.
Selepas menerima isyarat, proses utama nginx akan membaca nama fail log daripada fail konfigurasi, membuka semula fail log (dinamakan dengan nama log dalam fail konfigurasi), dan menggunakan pengguna proses pekerja sebagai pemilik fail log itu.
Selepas membuka semula fail log, proses utama nginx akan menutup fail log dengan nama yang sama dan memberitahu proses pekerja untuk menggunakan fail log yang baru dibuka.
Proses pekerja segera membuka fail log baharu dan menutup fail log dengan nama yang sama.
Kemudian anda boleh memproses fail log lama.
skrip pemotongan automatik log nginx mengikut tarikh adalah seperti berikut
logs_path="/usr/local/nginx/logs/"
pid_path="/usr/local/nginx/nginx.pid"
mv ${logs_path}access.log ${logs_path}access_$(tarikh -d "semalam" +"%Y%m%d").log
bunuh -USR1 cat ${pid_path}
Simpan skrip nginx_log.sh di atas, atau klik di sini untuk memuat turun
kerja persediaan crontab
0 0 * * * bash /usr/local/nginx/nginx_log.sh
Ini akan menamakan semula log nginx kepada format tarikh pada 0:00 setiap hari dan menjana semula fail log baharu hari ini.
Rujukan sumber terperinci: http://www.nginx.cn/255.html
世界只因有你2017-05-16 17:31:36
Cara paling mudah ialah mengkonfigurasinya terus dalam fail konfigurasi:
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
set $year ;
set $month ;
set $day ;
}
access_log /home/wwwlogs/$year-$month-$day-bbs-access.log access;