Nginx本身并不支持日志切割,那么就会造成日志非常的大,为了解决这个问题我们用到了windows的计划任务和dos命令。
一、思路:
- 写一个dos文件(桌面新建一个文本文件并改名成log-split.bat),通过windows的计划任务定时执行(每天执行一次)
- dos命令里面将根据日期来移动文件
- nginx.exe -s reopen(优先用这种) 或者 nginx.exe -s reload 或者 移动前停止nginx,移动成功后启动nginx 或 执行 (不推荐)
二、dos命令如下:
@echo off rem 先进去 D盘,否则会导致启动不了nginx rem cd /d D:\Program Files\nginx-1.14.2 这个命令只有在d盘好使。 D: cd D:\Program Files\nginx-1.14.2 taskkill /F /IM nginx.exe > nul rem date格式:2021-08-06 set today=%date:~0,4%-%date:~5,2%-%date:~8,2% set dir=D:\Program Files\nginx-1.14.2\logs\backup md "%dir%" rem access log 后面的是你要备份日志文件的地址 move "D:\Program Files\nginx-1.14.2\logs\access.log" "%dir%\access-%today%.log" rem start nginx 这种方式有点粗暴 rem reopen log files,否则无法日志无法继续写入文件 rem nginx.exe -s reopen(优先用这种) 或者 nginx.exe -s reload nginx.exe -s reopen pause
说明:
- taskkill就是杀死进程
- 因为目录中存在空格,因此需要用双引号将目录引起来
- start nginx就是启动nginx
- %date%用于获取日期,后面的参数类似于substring(position,len)
- @echo off表示后面的代码是一个代码块,而非一行一句,主要是因为定义了变量这些
- pause表示暂停,这样dos窗体就不会一闪而过,我们能够清晰的看到执行结果,(在调试过程中使用,正式调通以后可以注释掉)
- rem 是注释
三、新建windows 计划任务
这个时间最是 23:59:59秒,也可根据业务需求来弄。
到这就完成nginx 的日志切割工作,等第二天看任务是否成功执行即可。