Clear Exchange Server 2016 Logs

In this blog post, I’ll show you how to clear Exchange Server 2016 and 2013 logs and free a lot of disk space from Exchange Server.

Exchange Server 2016  Logs

Not a lot of Admins know It until it’s too late and Exchange Server Is about to run out of space, but Exchange Server 2016 and 2013 log almost everything Into the disk.

This new feature Is great but If you are not aware If you will be surprised when your new Exchange Server Is out of space and email Is not working.

As you can see below, My Exchange Server 2016 Logging directory has 36GB of logs which were filled In less than a week.

In the Logging\AutoDiscover directory all the logs are kept and unless deleted they will keep going.

The Solution

Luckily, Microsoft released a great script that clears all the logs without breaking Exchange Server.

In my case, all I had to do Is change the path of the logs from C to D, If didn’t changed the default Exchange Install there Is nothing to change.

I created a task Schedule and used it to run every day.

Note: This script will not delete database log files.

Set-Executionpolicy RemoteSigned

$days=0

$IISLogPath="C:\inetpub\logs\LogFiles\"

$ExchangeLoggingPath="C:\Program Files\Microsoft\Exchange Server\V15\Logging\"

$ETLLoggingPath="C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces\"

$ETLLoggingPath2="C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\Logs"

Function CleanLogfiles($TargetFolder)

{

write-host -debug -ForegroundColor Yellow -BackgroundColor Cyan $TargetFolder

if (Test-Path $TargetFolder) {

$Now = Get-Date

$LastWrite = $Now.AddDays(-$days)

# $Files = Get-ChildItem $TargetFolder -Include *.log,*.blg, *.etl -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}

$Files = Get-ChildItem "C:\Program Files\Microsoft\Exchange Server\V15\Logging\" -Recurse | Where-Object {$_.Name -like "*.log" -or $_.Name -like "*.blg" -or $_.Name -like "*.etl"} | where {$_.lastWriteTime -le "$lastwrite"} | Select-Object FullName

foreach ($File in $Files)

{

$FullFileName = $File.FullName

Write-Host "Deleting file $FullFileName" -ForegroundColor "yellow";

Remove-Item $FullFileName -ErrorAction SilentlyContinue | out-null

}

}

Else {

Write-Host "The folder $TargetFolder doesn't exist! Check the folder path!" -ForegroundColor "red"

}

}

CleanLogfiles($IISLogPath)

CleanLogfiles($ExchangeLoggingPath)

CleanLogfiles($ETLLoggingPath)

CleanLogfiles($ETLLoggingPath2)

Before running the script

As you can see, before running the script I had 62GB free

Below you can see the script In action

After the script run, I have 96 GB free

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.