Its been almost a year since my first post on this subject. Over the past year I have moved from hosting all of my websites with Server 2003 to Server 2008, and in the course of that I had to re-setup my log zipping application.
In the course of that, I found that the previous script did not work with IIS7 logfiles. The difference being the default naming convention of the files. In IIS 6 the name was exYYMMDD.log, in IIS7 the name is u_exYYYYMMDD.log. that extra u_ was throwing off the script as it tried to parse the date out to create the zip file. So I got back in touch with my buddy who originally wrote the script and requested some features.
What we came up with is a script that determines the offset of the date in the filename and can parse the date regardless of the convention. This will allow you to run it against IIS6 or IIS7 logs without modification. (In theory you could use this against any type of log file that includes a date, but I have not tested it)
We also threw in a variable that allows the user to set how many days of logfiles to keep on the drive unzipped. In this fashion you can keep the most recent X days of logs uncompressed for troubleshooting.
I also included a batch file that will allow you to run, and/or schedule a task to run the script as needed. The files are located here. Give it a shot and let me know if it helps!
I’ve been working with Windows Sever 2008 and 2008 R2 only for a couple of months now. Generally the OS is greatly improved over 2003. There are many quirks that are frustrating though. They are generally little things, but there is nearly zero documentation and only extensive web searches reveal the fix.
One issue I’ve been struggling with is the Task Scheduler not working on what I had assumed were basic tasks. I have a script that I run to clean out files of a certain age from a specified folder. I use it for deleting log files and some backups etc. The task simply executes a batch file which calls a .vbs script. The task was failing with error code 0x1 without any farther details. After some time spent searching and trying different things I found the trick that worked.
When running a batch file at least, it seems that when setting up a task you cannot just specify the file to be run, you also have to specify the ‘start in’ parameter. For example if you specify c:\temp\script.bat you also have to specify c:\temp as the start in parameter. I did this and my task is now working like a charm!
We have a variety of servers that run many different applications which log to a file. This includes IIS, SMTP, FTP, etc. The list goes on and on. It is easy to lose track of them all, and even easier to let the log files fill up your drive while your not watching!
We have had to go through and zip up or delete logs to clear up disk space many times. The full drives have on occasion caused service outages due to not being able to write to the log files. We have struggled to find an easy/inexpensive way to do this. It would be easy to write a batch script to delete all the files, but we are under PCI requirements to keep a certain amount of log files on disk for compliance reasons. Thus the need to zip up the files and delete the originals.
One of our excellent coders at my office came up with this great VB script that will do just this for us. It will curse through a directory *and all its sub directories* looking for files with the extension ‘.log’ (or whatever extension you want) and mash them all into a single date-stamped zip file.
One thing I need to mention is that this script is looking specifically for log files that have a date stamped file name (this is how it created a date stamped zip), so it will only really work on IIS logs and the like.
Take it for a spin and let me know what you think!
[UPDATE: 8/19/2011] I have a new version of this file described in the following post.