日志旋转nginx在Windows上

我在网上find了很多关于在linux下旋转nginx日志的参考资料,只要把USR1信号发送到进程即可。 但是…类似于unix的信号在windows上不存在,我一直无法find任何信息。 我怎么能在windows上用nginx完成同样的事情?

其实,(尽管大量的谷歌搜索),答案可以直接在文档页面找到 。

该命令是:

nginx -s reopen 

但是,这似乎只能从命令行运行nginx – 当前唯一官方的方式来运行nginx在Windows目前。

我的下一个挑战是如何使nginx作为一个windows服务运行,如下所述: Nginx Windows服务 。

要在Windows中旋转nginx日志,请创建一个像这样的批处理文件

 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 

第一行只是创建一个时间戳(信贷给杰伊 )

然后在Windows中创建一个计划任务来运行该批处理文件,如何经常要旋转日志。

如果nginx作为一个服务运行 (比如通过这里描述的Windows服务包装器),你不能简单地调用像nginx -s reopen这样的nginx -s reopen命令直接nginx -s reopen 。 相反,您必须以运行该服务的用户身份运行这些命令。

为此,请创建一个名为nginx 的新用户 (例如), 并将服务和计划任务都配置为以该用户身份运行 。 您还必须确保您的用户具有“ 作为批处理作业登录 ”权限。

如果你想在命令行测试你的循环脚本,而不必使用你可以使用的计划任务

 runas /user:nginx "C:\path\to\rotateLogs.bat" 

1.首先创建一个文件来存储你的日志文件列表,如“nginx_log.lst”,内容为:

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

2.将以下内容保存到“nginx_log_rotate.bat”等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.创建一个计划任务来运行你想要的蝙蝠

我写了一个小的实用工具,在stoppig nginx(运行windows服务)之后旋转日志文件几秒钟。

它有具体的要求停止,然后复制日志文件,然后重新启动服务的基础上。 你可以下载代码,并以任何你想要的方式改变它。

代码在这里: http : //mandar.tumblr.com/post/5419161330/nginx-logrotate-windows

谢谢

与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