Maison > Questions et réponses > le corps du texte
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 ?
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
怪我咯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.
我想大声告诉你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
logs_path="/usr/local/nginx/logs/"
pid_path="/usr/local/nginx/nginx.pid"
mv ${logs_path}access.log ${logs_path}access_$(date -d "hier" +"%Y%m%d").log
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
世界只因有你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;