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 18/july/2013 REM Enter the file path for the ULS log directory path SET log=D:LogsIIS REM ENTER no of days old logs to be archived SET days=15 REM Enter the location for the temporary logs backup and archive file location SET backup=d:archive REM sets the compress utility directory to PATH variable REM SET PATH=%Path%;C:Program Files7-Zip REM copy the current logs directory structure mkdir %backup% 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" PUSHD %log% FOR /F %%v IN ('dir/ad/b') DO forfiles -p "%log%%%v" -m *.log -d -%days% -c "cmd /c copy @path %backup%%%v@file" POPD 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