recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment faire une coupe de journal dans nginx

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 ?

高洛峰高洛峰2781 Il y a quelques jours616

répondre à tous(5)je répondrai

  • phpcn_u1582

    phpcn_u15822017-05-16 17:31:36

    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

    répondre
    0
  • 怪我咯

    怪我咯2017-05-16 17:31:36

    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.

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 17:31:36

    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

    répondre
    0
  • 世界只因有你

    世界只因有你2017-05-16 17:31:36

    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;

    répondre
    0
  • 天蓬老师

    天蓬老师2017-05-16 17:31:36

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

    répondre
    0
  • Annulerrépondre