Чтобы вращать журналы nginx в Windows, создайте командный файл , как этот:
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
Эта первая строка просто создает временную метку (кредит Jay )
Затем создайте запланированное задание в Windows, чтобы запускать этот пакетный файл, как часто вы хотите вращать журналы.
Если nginx работает какservice (например, через Windows Service Wrapper, описанный здесь ), вы не можете просто вызывать команды nginx, такие как nginx -s reopen
напрямую.Вместо этого вы должны запускать команды от имени пользователя, от имени которого работает служба.
Для этого создайте нового пользователя с именем nginx
(например) и , чтобы настроить службу и запланированную задачу для запуска от имени этого пользователя .Вам также необходимо убедиться, что у вашего пользователя есть права « Вход в систему как пакетное задание ».
Если вы хотите протестировать свой скрипт ротации в командной строке, не используя запланированныйзадание, которое вы можете использовать
runas /user:nginx "C:\path\to\rotateLogs.bat"