82 lines
2.8 KiB
PowerShell
82 lines
2.8 KiB
PowerShell
|
function Remove-ORBLogFiles {
|
|||
|
<#
|
|||
|
.SYNOPSIS
|
|||
|
Deletes current ORB Logs in a folder
|
|||
|
|
|||
|
.DESCRIPTION
|
|||
|
In a given directory path, this will delete either all log files or all rolled log files.
|
|||
|
|
|||
|
.PARAMETER LogDirectory
|
|||
|
String representation of a path to a folder. Any log files in this folder could be deleted.
|
|||
|
|
|||
|
.PARAMETER SkipActiveLogs
|
|||
|
Switch to ignore any currently active logs (ones that have not rolled)
|
|||
|
#>
|
|||
|
[CmdletBinding()]
|
|||
|
Param(
|
|||
|
[Parameter(Mandatory = $false)]
|
|||
|
[Alias("LogPath")]
|
|||
|
[string]$LogDirectory,
|
|||
|
|
|||
|
[Parameter(Mandatory = $false)]
|
|||
|
[Alias("SkipActive")]
|
|||
|
[switch]$SkipActiveLogs
|
|||
|
)
|
|||
|
|
|||
|
$logLead = (Get-LogLeadName)
|
|||
|
|
|||
|
if ([string]::IsNullOrEmpty($LogDirectory)) {
|
|||
|
$LogDirectory = (Get-OrbLogsPath)
|
|||
|
}
|
|||
|
|
|||
|
$filter = if ($SkipActiveLogs) { "*.log.*" } else { "*.log*" };
|
|||
|
|
|||
|
# Remove any potential trailing wildcarded directories
|
|||
|
while ($LogDirectory.EndsWith("\*") ) {
|
|||
|
Write-Host "$logLead : Found a wildcard. Trimming..."
|
|||
|
$LogDirectory = $LogDirectory.Substring(0, $LogDirectory.Length - 2)
|
|||
|
}
|
|||
|
|
|||
|
# Tack on a single \* so that GCI plays nicely with both the Include and Exclude parameters
|
|||
|
$LogDirectory = $LogDirectory + "\*"
|
|||
|
|
|||
|
# Force the array in case Get-ChildItem only returns one item
|
|||
|
$logFiles = @()
|
|||
|
$logFiles = [array](Get-ChildItem -Path $LogDirectory -Include $filter -File).Where({$_.Name -notmatch "\d{12}"})
|
|||
|
|
|||
|
# Slog files get saved with the date stamp in the filename
|
|||
|
# For example: Alkami.Services.BillPayOrchestration-20210901.slog
|
|||
|
# Super annoying
|
|||
|
# Slog files also have file locks unless they've been written to, even if the date has rolled
|
|||
|
# This should handle most cases
|
|||
|
if ($SkipActiveLogs) {
|
|||
|
$slogDateFormat = (Get-Date).ToString("yyyyMMdd")
|
|||
|
$logFiles += [array](Get-ChildItem $logDirectory -Include "*.slog*" -Exclude "*$slogDateFormat.slog*" -File) -notmatch "\.(gz|7z|zip)"
|
|||
|
} else {
|
|||
|
|
|||
|
$logFiles += [array](Get-ChildItem $logDirectory -Include "*.slog*" -File) -notmatch "\.(gz|7z|zip)"
|
|||
|
}
|
|||
|
|
|||
|
if(Test-IsCollectionNullOrEmpty $logFiles) {
|
|||
|
Write-Warning "$logLead : No log files to remove. Returning."
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
Write-Host ("$logLead : Delete {1} {0} files" -f $filter, $logFiles.Count)
|
|||
|
|
|||
|
$errorCount = 0
|
|||
|
foreach ($logFile in $logFiles) {
|
|||
|
try {
|
|||
|
if ((Test-Path -Path $logFile) -eq $false) {
|
|||
|
Write-Warning "$loglead : File does not exist: $logFile"
|
|||
|
continue
|
|||
|
}
|
|||
|
Write-Verbose ("$logLead : Removing log file {0}" -f $logFile.FullName)
|
|||
|
Remove-Item -Path $logFile.FullName -Force
|
|||
|
} catch {
|
|||
|
Write-Warning $_.Exception
|
|||
|
$errorCount++
|
|||
|
}
|
|||
|
}
|
|||
|
Write-Host ("$logLead : {0} of {1} Deletes Complete" -f ($logFiles.Count - $errorCount), $logFiles.Count)
|
|||
|
}
|