Private/Write-CustomLog.ps1
|
function Write-CustomLog { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$Message, [Parameter(Mandatory = $false)] [ValidateSet('DEBUG', 'INFO', 'WARNING', 'ERROR')] [string]$Severity = 'INFO', [Parameter(Mandatory = $false)] [switch]$NoCache ) $consoleColor = switch ($Severity) { 'DEBUG' { 'Gray' } 'INFO' { 'White' } 'WARNING' { 'Yellow' } 'ERROR' { 'Red' } default { 'White' } } Write-Host "[$Severity] $Message" -ForegroundColor $consoleColor try { Write-Log -Level $Severity -Message $Message } catch { Write-Verbose "Failed to write to log file: $($_.Exception.Message)" } if (-not $NoCache) { $logEntry = @{ timestamp = [DateTimeOffset]::UtcNow.ToUnixTimeMilliseconds() level = $Severity.ToUpper() message = $Message } [void]$script:IN_MEMORY_LOGS.Add($logEntry) } } |