The data keeps on growing as the SharePoint Farm being adopted more into the company and customers. It brings more challenges in terms of keeping up with the pace of requests and data administration. We are going to address today one part of that problem which is managing SharePoint LOGS weather it is ULS, Diagnostic and Analytic logging. Also it includes IIS logs. To address this challenge I did wrote a small script to migrate these logs to a different directory and them zip these logs and move to a network storage or to another directory on the local hard drive.
Some of the challenges to achieve this were
· There are IIS logs with same file names in different directories (mainly IIS logs) we need to maintain the directories structure to not miss any logs.
· The criteria to move these logs out is based on a number of day , like I need to move all the logs 15 or older away from the default logs folder or drive.
· Then zip these logs and add to same archive file as this script has to run daily and we have a single archive file on that machine and to maintain the zip name to reflect the server name to easy recognition on the network store.
· All this to be scripted in batch scripting and using a free compress utility (7z) command line utility to include compress in the script.
· Donwload 7z and install it to program files as we need to add this install path to environment variable PATH to use it in script directly
REM Sharepoint ULS and IIS Log cleanup script (backup and compress)
REM Venu Madhav
REM Enter the file path for the ULS log directory path
REM ENTER no of days old logs to be archived
REM Enter the location for the temporary logs backup and archive file location
REM sets the compress utility directory to PATH variable
REM SET PATH=%Path%;C:\Program Files\7-Zip
REM copy the current logs directory structure
echo D | xcopy %log% %backup% /t
REM copies all the *.log files matching to the criteria in root directory initially
forfiles -p "%log%" -m *.log -d %days% -c "cmd /c copy /Y @path %backup%\@file"
FOR /F %%v IN ('dir/ad/b') DO forfiles -p "%log%\%%v" -m *.log -d -%days% -c "cmd /c copy @path %backup%\%%v\@file"
REM creating a compress file with hostname if it already exists it appends these logs either in local directory or network location
for /F %%v in ('hostname') DO 7z a d:\logs\%%v.zip %backup%\*
REM once the logs are compressed remove the log files meeting the criteria
forfiles -p "%log%" -m *.log -s -d -%days% -c "cmd /c del @path /F /Q"
REM removing the temporary folder after the log compressed and zipped
rmdir %backup% /S /Q