admin 管理员组

文章数量: 887006

基础软件和服务都会产生日志,当日志太多就会占用磁盘空间,因此需要定期清除,windows通常使用bat脚本处理
一:日志切割
1.windows脚本,以nginx 为例

@echo off
c:
set nginx=%C:\Users\Lenovo\Desktop%
set "cmdstr=move %nginx%\logs\access.log  %nginx%\logs\access.%date:~0,4%-%date:~5,2%-%date:~8,2%.log
call %cmdstr%"
set "cmdstr=move  %nginx%\logs\error.log  %nginx%\logs\error.%date:~0,4%-%date:~5,2%-%date:~8,2%.log
call %cmdstr%"
cd %nginx%
nginx -s reopen

这里需要注意,如果操作系统是英文版本,获得当前日期 yyyymmdd使用%date:10,4%%date:7,2%-%date:~4,2%
是中文版使用:%date:0,4%-%date:5,2%-%date:~8,2%
否则生成日期不对

2.nssm工具实现
nssm工具能将服务注册成windows服务,可以在windows services 中开启或者关闭,非常方便,还能做到开机自启,日志分割,如下
nssm下载地址:http://www.nssm/download
1.在nssm.exe 同文件夹下,执行命令nssm.exe install,在弹出框选择执行开启命令以及文件目录

2.选择开机自启

3.选择日志和错误日志

4选择开启是否自动覆盖,日志分割时间和日志分割大小
(这里通常时间过小,如果没有日志的话,就不会分割)

5.完成后可以在运行窗口执行services.msc 在windows文件附中看到注册的服务

修改服务使用nssm.exe edit 服务名
删除使用sc delete 服务名

二:日志清理

bat脚本
set log_dir="C:\server\sms\log\sms\error"
:: 保留日志天数
set bak_dat=2
:: 删除日志文件。解释:删除C:\server\sms\log\sms\info目录下以.log结尾的2天前的文件
forfiles /p %log_dir% /M "*.log" /D -%bak_dat% /C "cmd /c del @file"
:: 删除日志文件夹。解释:删除C:\server\sms\log\sms\info目录下以20开头的15天前的文件夹
::forfiles /p %log_dir% /d -%bak_dat% /m "20*" /c "cmd /c if @isdir==TRUE (rmdir /q /s @path)"

脚本写好后,使用windows 定时任务管理
1.

2创建任务

3.创建名称

4每天夜间执行

5选择bat文件路径,点击确认就可以每天执行,清理日志了

本文标签: 日志 Windows