Solved

logrotate for Windows 2003

Posted on 2007-11-21
3
7,012 Views
Last Modified: 2011-11-17
I am looking for some tool similar to logrotate in linux, but for Windows 2003 Server.

Does any one knows a tool like that?


Thanks in advance and best regards,
JJ.-
0
Comment
Question by:begar
  • 2
3 Comments
 
LVL 86

Accepted Solution

by:
jkr earned 250 total points
ID: 20330384
AFAIK Apache for Win32 comes with a 'logrotate' that can be used on Windows, see http://httpd.apache.org/download.cgi
0
 

Expert Comment

by:sas900
ID: 37154149
Copy the following lines in a bat- or cmd-files and use scheduled tasks.

I've checked it for german dates.
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
:: ========================================================
:: setup variables and parameters
:: ========================================================

:: USE Service Display Name, Services are space-separated -> Syntax: "Display Name 1" "Display Name 2"
SET ROTATE_SERVICES="Apache2.2"

:: setting LOG-directory, log-files in this directory should be rotate
SET ROTATE_LOGDIR=F:\xampp\apache\logs

:: files which should rotate (space separated)
SET ROTATE_FILES=access.log error.log ssl_request.log

:: SET the Number Of Archives To Keep
SET /a keptarchives=5

:: SET delimiter for date format (english "/", german ".")
SET DATEDEL=.
:: ========================================================
:: DO NOT CHANGE ANYTHING
:: ========================================================

:: Check for existing Log-directory
IF NOT EXIST "%ROTATE_LOGDIR%" (
	CALL :LOG Please check your paths to Log Directory
	PAUSE
	GOTO :EOF
)

:: Check for existing Log-files
FOR %%d IN (%ROTATE_FILES%) DO (
	IF NOT EXIST "%ROTATE_LOGDIR%\%%d" (
		CALL :LOG File %ROTATE_LOGDIR%\%ROTATE_LOGFILES% does not exist!
		PAUSE
		GOTO :EOF
	)
)

:: generate date and time variables for execution
FOR /f "tokens=1,2,3 delims=%DATEDEL% " %%i IN ('date /T') DO SET execdate=%%k%%j%%i
FOR /f "tokens=1,2 delims=: " %%i IN ('time /T') DO SET exectime=%%i%%j
SET fullexectime=%execdate%_%exectime%
:: ========================================================


:: ========================================================
:: Operations
:: ========================================================

FOR %%d IN (%ROTATE_SERVICES%) DO (
	NET STOP %%d
)

FOR %%d IN (%ROTATE_FILES%) DO (
	cd /d %ROTATE_LOGDIR%
	IF NOT EXIST OLD (MKDIR OLD) 
	move %%d %ROTATE_LOGDIR%\OLD\%fullexectime%_%%d
)

FOR %%d IN (%ROTATE_SERVICES%) DO (
	NET START %%d
)

:: ========================================================
:: ZIP - LOGFILES
:: ========================================================
cd /d %ROTATE_LOGDIR%\OLD
CALL "%~dp0\7za.exe" a %ROTATE_LOGDIR%\OLD\%fullexectime%_log.zip %ROTATE_LOGDIR%\OLD\%fullexectime%_*.log
	IF %ERRORLEVEL% NEQ 0 (
		CALL :LOG Error while compressing log-file. Log will not deleted and not rotated. Check your OLD-directory!
		PAUSE
		GOTO :EOF
	)
del /Q %fullexectime%_*.log

:: ========================================================
:: ROTATE - ZIPPED LOGFILES
:: ========================================================

:: make list of archive zip files
type NUL > arclist.dat
for /F "tokens=1,2 delims=[] " %%i in ('dir /B *_log.zip ^| find /N "_log.zip"') do echo  %%i = %%j>> arclist.dat

:: count total number of files
for /F "tokens=1 delims=" %%i in ('type arclist.dat ^| find /C "_log.zip"') do set tnof=%%i

:: setup for and create the deletion list
set /a negtk=%keptarchives%*-1
set /a tntd=%tnof% - %keptarchives%

type NUL>dellist.dat
for /L %%i in (%negtk%,1,%tntd%) do find " %%i = " arclist.dat >> dellist.dat

:: del the old files
for /F "tokens=3 delims= " %%i in ('find "_log.zip" dellist.dat') do del /Q %%i

:: remove temp files
del /Q arclist.dat
del /Q dellist.dat


GOTO :EOF

:LOG
	SET MSG=[%DATE%, %TIME: =0%] %*
	ECHO.!MSG!
	SET MSG=
	GOTO :EOF
pause

Open in new window

0
 

Expert Comment

by:sas900
ID: 37154203
Sorry, i've forgotton...

You need a 7za.exe at the same directory where your bat-file exists. For compression...
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Update 11/3/2014 - Although the below article will get you to relocate the WINSXS folder, Microsoft has finally released a utility to reduce the size of the WINSXS folder. For some reason, it's not that straightforward. It only works on Windows 2008…
In this article, I will show you HOW TO: Perform a Physical to Virtual (P2V) Conversion the easy way from a computer backup (image).
Windows 8 came with a dramatically different user interface known as Metro. Notably missing from that interface was a Start button and Start Menu. Microsoft responded to negative user feedback of the Metro interface, bringing back the Start button a…
With the advent of Windows 10, Microsoft is pushing a Get Windows 10 icon into the notification area (system tray) of qualifying computers. There are many reasons for wanting to remove this icon. This two-part Experts Exchange video Micro Tutorial s…

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now