nginx日志分割防止日志过大而影响我们对日志的查看,今天给大家分享一个我在工作中作的一个windows的nginx日志分割具体步骤如下:
使用winsw来将nginx安装为服务()下载地址,
1. 从官网下载WinSW.NET2.exe文件,并重命名为nginx-service.exe;
2. 新建nginx-service.xml文件,并根据配置文件说明来编写配置参数。
配置文件说明
nginx-1.18.0
Nginx Service
Nginx Service
%BASE%nginx.exe
-s stop
%BASE%logsnginx-service
10240
8
与windows服务的对应关系如下:
其中%BASE%表示的是exe文件所在的目录,所以为了以上配置能正常生效,需要将exe文件、xml配置文件都放在nginx的根目录中
stoparguments表示停止windows服务时执行指令的参数,与executable结合起来就是:nginx.exe -s stop
log参数配置的是winsw的运行日志,一般包括安装、卸载服务、服务运行等信息,其中sizeThreshold表示日志文件的最大存储值,keepFiles表示最多保留多少个日志文件。
1. 安装服务
将nginx-service.exe以及配置好的nginx-service.xml文件拷贝到nginx根目录后,打开命令行窗口,切换到当前目录
如下,输入nginx-service.exe -h,可以看到winsw可以使用的各种指令
运行指令:nginx-service.exe install
可以将当前目录下的nginx安装为服务
运行指令:nginx-service.exe uninstall
可以卸载已安装的服务
但是nginx以服务运行后会出现一个问题,当执行nginx -s reload重新加载指令,或nginx -s stop停止指令时,会出现以下错误:
这是因为nginx服务是以“本地系统”的登录方式运行的,当前用户没有权限对它的服务进程进行操作linux查看nginx安装路径,
为了解决这个问题,需要打开如下所示的服务“属性”弹窗,选择“登录”选项卡选择登录身份为“此账户”并选择当前登录系统的用户,输入相应的密码。
配置完成后,可以看到Nginx对应的服务已经“登录为”设置的用户了
然后重启Nginx服务,nginx的指令也可以顺利执行了
这里费劲解决这个问题,主要是因为nginx服务的重启是:停止+启动的过程,并不会像nginx -s reload一样在启动之前检查配置文件是否正确。
2. nginx日志分割
使用该脚本前linux查看nginx安装路径,需要先修改脚本中NGINX_HOME对应的路径:
Windows 系统下使用 cmd 编写的 nginx 日志分割脚本:
cmd复制代码@echo off
set logPath=D:nginx1.18logs
set date=%date:~0,4%-%date:~5,2%-%date:~8,2%
set backupFolder=D:nginx1.18logsbackup
:: 如果备份目录不存在,则创建该目录
if not exist %backupFolder% mkdir %backupFolder%
:: 找到所有日志文件并复制到备份目录
for %%i in (%logPath%*.log) do (
for /f "tokens=1-3 delims=." %%a in ("%%~ni") do (
if not "%%c"=="" (
if %%b==%date% (
copy "%%~fi" "%backupFolder%%%a_%%b.%%c"
)
) else (
if %%a==access (
if %%b==%date% (
copy "%%~fi" "%backupFolder%access_%%b.log"
)
)
)
)
)
:: 清空日志文件
for %%i in (%logPath%*.log) do (
for /f "tokens=1-3 delims=." %%a in ("%%~ni") do (
if not "%%c"=="" (
if %%b==%date% (
>"%%~fi" type nul
)
) else (
if %%a==access (
if %%b==%date% (
>"%%~fi" type nul
)
)
)
)
)
限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688