Comment faire une coupe de journal dans nginx
高洛峰
高洛峰 2017-05-16 17:29:36
0
5
591

Les journaux Nginx sont écrits dans un fichier. J'ai besoin d'un journal Nginx chaque jour
. J'ai vu de nombreuses méthodes sur Internet, qui consistent toutes à écrire des scripts et à couper des fichiers journaux dans un format fixe
Nginx ne peut-il pas effectuer lui-même la découpe de journaux ?

高洛峰
高洛峰

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

répondre à tous(5)
phpcn_u1582

Confirmez que cron est en cours d'exécution

service crond status

Modifier le fichier de configuration

vi /etc/crontab

Confirmer les tâches planifiées

vi /etc/cron.daily/logrotate

Écrire le fichier de configuration de 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
}

Test de configuration

/usr/sbin/logrotate -f /etc/logrotate.d/nginx
刘奇

Les besoins de journalisation des administrateurs système sont en constante évolution. Pour des raisons de légèreté, Nginx ne se soucie vraiment pas de la gestion des journaux.

Page Wiki officielle de LogRotation

Je suppose que vous l'avez également trouvé, vous pouvez utiliser votre propre script ou vous connecter.

我想大声告诉你

Les fichiers journaux nginx n'ont pas de fonction de rotation. Si vous ne le gérez pas, le fichier journal deviendra de plus en plus volumineux. Heureusement, nous pouvons écrire un script de coupe de journal nginx pour couper automatiquement le fichier journal.

La première étape consiste à renommer le fichier journal. Ne vous inquiétez pas si nginx ne parvient pas à trouver le fichier journal et perd le journal après le changement de nom. Avant de rouvrir le fichier journal avec le nom d'origine, nginx écrira toujours les journaux dans le fichier que vous avez renommé. Linux s'appuie sur des descripteurs de fichiers plutôt que sur des noms de fichiers pour localiser les fichiers.

La deuxième étape consiste à envoyer le signal USR1 au processus principal nginx.

Après avoir reçu le signal, le processus principal de nginx lira le nom du fichier journal à partir du fichier de configuration, rouvrira le fichier journal (nommé avec le nom du journal dans le fichier de configuration) et utilisera l'utilisateur du processus de travail comme propriétaire de le fichier journal.

Après avoir rouvert le fichier journal, le processus principal nginx fermera le fichier journal du même nom et informera le processus de travail d'utiliser le fichier journal nouvellement ouvert.

Le processus de travail ouvre immédiatement de nouveaux fichiers journaux et ferme les fichiers journaux du même nom.

Ensuite, vous pouvez traiter les anciens fichiers journaux.

Le script de coupe automatique du journal Nginx par date est le suivant

  • script de coupe de journal nginx
  • auteur : http://www.nginx.cn
  • !/bin/bash
  • Définissez le répertoire de stockage des fichiers journaux

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

  • Définir le fichier pid

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

  • Renommer le fichier journal

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

  • Signalez le processus principal nginx pour rouvrir le journal

tuer -USR1 cat ${pid_path}

Enregistrez le script ci-dessus nginx_log.sh, ou cliquez ici pour télécharger

tâche de configuration de crontab

0 0 * * * bash /usr/local/nginx/nginx_log.sh
Cela renommera le journal nginx au format de date à 0h00 chaque jour et régénérera le nouveau fichier journal d'aujourd'hui.

Référence source détaillée : http://www.nginx.cn/255.html

世界只因有你

Le plus simple est de le configurer directement dans le fichier de configuration :

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

Cette méthode génère souvent des fichiers sans date et est obsolète

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal