`

windows下nginx日志分割实现

阅读更多

在windows下安装nginx后,由于nginx本身没有提供日志分割的功能配置,所以只能通过windows的计划任务来实现该功能,并需要配合写一个简单的分割用的批处理命令来用。

 

假设我的nginx安装在D:\nginx目录下,而相关应用的日志被配置为3个日志,分别为:

  • xxxxx.com.log  正常的应用访问日志
  • xxxxx.com_444.log 非法访问日志,在nginx中,444为特有的拒绝连接状态,所以设为444别名
  • xxxxx.com_res.log 静态资源访问日志

现在需要每天将日志分割到单独的目录下,并按年月日目录区分:

先写批准处理的bat脚本如下:

for /f "tokens=1 delims=/ " %%j in ("%date%") do set d1=%%j
for /f "tokens=2 delims=/ " %%j in ("%date%") do set d2=%%j
for /f "tokens=3 delims=/ " %%j in ("%date%") do set d3=%%j

set backupdir=d:\backup\%d1%\%d2%\%d3%

mkdir %backupdir%

move d:\ngins\logs\xxxxx.com*log %backupdir%

d:\ngins\nginx -s reload

 上面的命令先将date按/符号分割为年月日的3个字符串,并在D盘的backup目录下创建年\月\日的目录,然后将对应应用的所有匹配的访问日志都移动到新创建的目录下,最后重新载入nginx配置(相当于重启)。

 

注意:上面对%date%的分割,未必一定是/符号,我在不同的windows系统上见过不同的分隔符,有的表示为如2014/05/04,有的则表示为2014-05-04的格式,所以要视实际情况来使用对应的分隔符。

 

批处理写完后,可以先尝试执行下看看效果,建议以上所有路径都使用绝对路径,避免分配到计划任务的时候执行失败。

 

下面就是添加到系统的计划任务里面,这个就比较简单:

开始 - > 程序 -> 附件 -> 系统工具 -> 任务计划程序,添加任务,然后根据提示一步步完成操作就可以了,添加完成后可以右击任务运行看看效果,确定没有问题后,就可以等第二天看结果了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics