Solved

logrotate for Windows 2003

Posted on 2007-11-21
3
7,037 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

Secure Your WordPress Site: 5 Essential Approaches

WordPress is the web's most popular CMS, but its dominance also makes it a target for attackers. Our eBook will show you how to:

Prevent costly exploits of core and plugin vulnerabilities
Repel automated attacks
Lock down your dashboard, secure your code, and protect your users

Question has a verified solution.

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

The Windows functions GetTickCount and timeGetTime retrieve the number of milliseconds since the system was started. However, the value is stored in a DWORD, which means that it wraps around to zero every 49.7 days. This article shows how to solve t…
There are many software programs on offer that will claim to magically speed up your computer. The best advice I can give you is to avoid them like the plague, because they will often cause far more problems than they solve. Try some of these "do it…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
In this video, viewers will be given step by step instructions on adjusting mouse, pointer and cursor visibility in Microsoft Windows 10. The video seeks to educate those who are struggling with the new Windows 10 Graphical User Interface. Change Cu…

688 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