Bagaimana untuk melakukan pemotongan log dalam nginx
高洛峰
高洛峰 2017-05-16 17:29:36
0
5
556

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?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(5)
phpcn_u1582

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
刘奇

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.

我想大声告诉你

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

  • skrip pemotongan log nginx
  • pengarang: http://www.nginx.cn
  • !/bin/bash
  • Tetapkan direktori storan fail log

logs_path="/usr/local/nginx/logs/"

  • Tetapkan fail pid

pid_path="/usr/local/nginx/nginx.pid"

  • Namakan semula fail log

mv ${logs_path}access.log ${logs_path}access_$(tarikh -d "semalam" +"%Y%m%d").log

  • Isyaratkan proses utama nginx untuk membuka semula 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

世界只因有你

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;
Peter_Zhu

Kaedah ini sering menjana fail tanpa tarikh dan telah ditamatkan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!