J'ai trouvé beaucoup de références sur le web pour faire tourner les logs de nginx sous Linux. Il suffit d'envoyer le signal USR1 au processus. Mais ... les signaux Unix n'existent pas sur Windows et je n'ai pas pu trouver d'informations à ce sujet. Comment puis-je accomplir la même chose avec nginx sur Windows ??rotation de log pour nginx sur windows
Répondre
En fait, (malgré des tonnes de googling), la réponse peut être trouvée carrément in the doc pages.
La commande est:
nginx -s reopen
Mais cela semble ne fonctionner que lors de l'exécution nginx de la ligne de commande – actuellement le seul moyen officiel d'exécuter nginx sur les fenêtres à cette époque.
Mon prochain défi consiste à comprendre comment faire fonctionner cette fonction lorsque nginx est exécuté en tant que service Windows, comme décrit ici: Nginx Windows Service.
J'ai écrit un petit utilitaire qui fait tourner les fichiers journaux après stoppig nginx (qui fonctionne sous Windows) pendant quelques secondes.
Il était nécessaire d'arrêter, puis de copier les fichiers journaux, puis de redémarrer le service à intervalles réguliers. Vous pouvez télécharger le code et le modifier comme vous le souhaitez.
codeest ici: http://mandar.tumblr.com/post/5419161330/nginx-logrotate-windows
Merci
merci pour l'information - cependant, nginx est conçu pour faire tourner les logs sans s'arrêter du tout, avec le signal rouvrir (en émettant nginx -s rouvrir) - cela a été corrigé dans la version Windows il y a quelque temps. Vous pouvez envisager de réécrire votre programme pour utiliser ce mécanisme. –
1.Premièrement créer un fichier pour stocker votre liste de fichier journal, comme "nginx_log.lst" avec le contenu:
D: \ projects \ example.com \ data \ log \ access.log D: \ projects \ example.com \ data \ log \ error.log
2.save le foll en raison du contenu dans un fichier de chauve-souris comme « nginx_log_rotate.bat »:
@echo off
set YMD=%date:~0,4%%date:~5,2%%date:~8,2%
set LOG_FILE=
FOR /F "eol=; delims=, " %%i in (nginx_log.lst) do (
echo "%%i"
move "%%i" "%%i.%YMD%"
)
pushd C:\tools\nginx
nginx -s reopen
popd
pause
@echo on
3. créer une tâche planifiée pour exécuter la chauve-souris que vous le souhaitez
Pour faire pivoter les journaux nginx dans Windows, créer un fichier batch comme celui-ci:
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set YMD=%%c-%%a-%%b)
move C:\path\to\nginx\logs\Access.log C:\path\to\nginx\logs\Access_%YMD%.log
move C:\path\to\nginx\logs\Error.log C:\path\to\nginx\logs\Error_%YMD%.log
call C:\path\to\nginx\nginx -p C:\path\to\nginx -s reopen
cette première ligne crée juste un horodatage (crédit à Jay)
Puis créer une tâche planifiée dans Windows pour exécuter ce fichier de commandes à quel point vous souhaitez souvent faire pivoter les journaux.
Si nginx est en cours d'exécution en tant que service (par exemple par le service Windows Wrapper décrit here) vous ne pouvez pas simplement appeler des commandes nginx comme nginx -s reopen
directement. Au lieu de cela, vous devez exécuter les commandes en tant qu'utilisateur sur lequel le service s'exécute.
Pour ce faire, créer un nouvel utilisateur appelé nginx
(par exemple) et configurer à la fois le service et la tâche planifiée pour exécuter en tant que utilisateur.Vous devrez également vous assurer que votre utilisateur a les droits "Logon as a batch job".
Si vous voulez tester votre script de rotation sur la ligne de commande sans avoir à utiliser une tâche planifiée, vous pouvez utiliser
runas /user:nginx "C:\path\to\rotateLogs.bat"
avec Windows Server 2008 R2, je crée ce fichier batch, et je le programmer un fois par jour à minuit:
@echo off
SET DATE=%date%
SET DAY=%DATE:~0,2%
SET MONTH=%DATE:~3,2%
SET YEAR=%DATE:~6,4%
SET DATE_FRM=%YEAR%-%MONTH%-%DAY%
ECHO %DATE_FRM%
REM ECHO %YEAR%
REM ECHO %MONTH%
REM ECHO %DAY%
move D:\nginx-1.11.1\logs\access.log D:\nginx-1.11.1\logs\access_%DATE_FRM%.log
move D:\nginx-1.11.1\logs\error.log D:\nginx-1.11.1\logs\error_%DATE_FRM%.log
call D:\nginx-1.11.1\nginx -p D:\nginx-1.11.1 -s reopen
Ceci est le poste sur l'exécution nginx comme service windows: http://misterdai.wordpress.com/2009/10/16/nginx-windows-service/ et par la manière ça marche vraiment bien. –