ротация журнала для nginx на windows - PullRequest
2 голосов
/ 21 августа 2010

В Интернете я нашел множество ссылок на вращение журналов nginx под linux ... просто отправьте сигнал USR1 процессу. Но ... Unix-подобные сигналы не существуют на окнах, и я не смог найти никакой информации по этому поводу. Как я могу сделать то же самое с Nginx на Windows ??

Ответы [ 6 ]

6 голосов
/ 21 января 2013

Чтобы вращать журналы 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"
5 голосов
/ 24 августа 2010

На самом деле, (несмотря на тонны поиска в Google), ответ можно найти прямо на страницах документа .

Команда:

nginx -s reopen

Но, похоже, это работает только при запуске nginx из командной строки & ndash; в настоящее время единственный официальный способ запуска nginx на windows в настоящее время.

Моя следующая задача - выяснить, как заставить это работать при запуске nginx в качестве службы Windows, как описано здесь: Служба Nginx Windows .

1 голос
/ 09 апреля 2012

1. Сначала создайте файл для хранения списка файлов журнала, например, «nginx_log.lst» с содержимым:

D: \ projects \ example.com \ data \ log \ access.logD: \ projects \ example.com \ data \ log \ error.log

2. сохранить следующее содержимое в файл bat, например "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.создать задание по расписанию для запуска летучей мыши, как вы хотите

0 голосов
/ 11 декабря 2018

По некоторым причинам, приведенным ниже, пакетный файл работал для меня.

For /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set YMD=%%c-%%a-%%b)
move .\logs\access.log .\logs\access.%YMD%.log
move .\logs\error.log .\logs\error.%YMD%.log
nginx.exe -s reload

Он более или менее совпадает с Ответ Тома выше.

0 голосов
/ 16 августа 2016

с windows server 2008 R2, я создаю этот пакетный файл и планирую его один раз в день в полночь:

@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
0 голосов
/ 16 мая 2011

Я написал небольшую утилиту, которая вращает файлы журналов после остановки nginx (которая работает как служба Windows) в течение нескольких секунд.

У нее было определенное требование остановить, затем скопировать файлы журнала и затем перезапустить службу практически сразу.Вы можете скачать код и изменить его по своему усмотрению.

Код здесь: http://mandar.tumblr.com/post/5419161330/nginx-logrotate-windows

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...