Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 7074
  • Last Modified:

logrotate for Windows 2003

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
begar
Asked:
begar
  • 2
1 Solution
 
jkrCommented:
AFAIK Apache for Win32 comes with a 'logrotate' that can be used on Windows, see http://httpd.apache.org/download.cgi
0
 
sas900Commented:
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
 
sas900Commented:
Sorry, i've forgotton...

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

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now