当前位置:  开发笔记 > 编程语言 > 正文

压缩IIS日志的自动脚本?

如何解决《压缩IIS日志的自动脚本?》经验,为你挑选了2个好方法。

我想写一个脚本/批处理,它将把我每天的IIS日志收起来并按月压缩它们.

ex080801.log,格式为ex yymmdd .log

ex080801.log - ex080831.log被压缩并删除日志文件.

我们这样做的原因是因为在一个繁重的站点上,一天的日志文件可能是500mb到1gb所以我们将它们压缩起来,将它们压缩98%并转储真实的日志文件.我们使用webtrend来分析日志文件,它能够读入zip文件.

有没有人有关于如何编写脚本或愿意分享一些代码的想法?



1> David Crow..:

您需要一个命令行工具来压缩文件.我推荐免费且易于使用的7-Zip.自包含命令行版本(7za.exe)是最便携的选择.

这是一个两行批处理文件,它会压缩日志文件并在之后删除它们:

7za.exe a -tzip ex%1-logs.zip %2\ex%1*.log
del %2\ex%1*.log

第一个参数是4位数的年份和月份,第二个参数是包含日志的目录的路径.例如:ziplogs.bat 0808 c:\logs

可以更精细地(即搜索文件名以确定要归档的月份).您可能需要查看Windows FINDSTR命令以使用正则表达式搜索输入文本.



2> alimack..:

这是我的脚本,它基本上适应了David的,并在上个月的日志中拉上,移动它们并删除原始日志文件.这也适用于Apache日志.唯一的问题是,如果您的DOS日期函数输出一周的日期,您可能需要编辑替换命令.您还需要安装7-zip.

你也可以下载IISlogslite,但它将每天的文件压缩成一个我认为没用的zip文件.有一个关于网络的vbscript在做同样的事情.

-------------------------------------------------------------------------------------
@echo on

:: Name - iislogzip.bat
:: Description - Server Log File Manager
::
:: History
:: Date         Authory      Change
:: 27-Aug-2008  David Crow   Original (found on stack overflow)
:: 15-Oct-2008  AIMackenzie  Slimmed down commands


:: ========================================================
:: setup variables and parameters
:: ========================================================
:: generate date and time variables

set month=%DATE:~3,2%
set year=%DATE:~8,2%

::Get last month and check edge conditions

set /a lastmonth=%month%-1
if %lastmonth% equ 0 set /a year=%year%-1
if %lastmonth% equ 0 set lastmonth=12
if %lastmonth% lss 10 set lastmonth=0%lastmonth%

set yymm=%year%%lastmonth%

set logpath="C:\WINDOWS\system32\LogFiles"
set zippath="C:\Program Files\7-Zip\7z.exe"
set arcpath="C:\WINDOWS\system32\LogFiles\WUDF"


:: ========================================================
:: Change to log file path
:: ========================================================
cd /D %logpath%

:: ========================================================
:: zip last months IIS log files, move zipped file to archive 
:: then delete old logs
:: ========================================================
%zippath% a -tzip ex%yymm%-logs.zip %logpath%\ex%yymm%*.log
move "%logpath%\*.zip" "%arcpath%"
del %logpath%\ex%yymm%*.log


我猜测更新版本的Windows只是改变了日期格式,但为了在Windows 7中正确获取月份和日期,我必须将这些行更改为:set month =%DATE:~4,2%set year =%DATE :〜12.2%
推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有