Assets/OpsUtils.psm1
|
# OpsUtils.psm1 function Write-OpsLog { param ( [Parameter(Mandatory=$true)] [string]$Message, [Parameter(Mandatory=$false)] [ValidateSet("DEBUG", "INFO", "WARNING", "ERROR")] [string]$Level = "INFO" ) $currentLevel = $env:OPS_LOG_LEVEL if ([string]::IsNullOrWhiteSpace($currentLevel)) { $currentLevel = "INFO" } $levels = @{ "DEBUG" = 0 "INFO" = 1 "WARNING" = 2 "ERROR" = 3 } if ($levels[$Level] -ge $levels[$currentLevel]) { $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" $logMsg = "[$timestamp] [$Level] $Message" Write-Output $logMsg # JSON Logging if (-not [string]::IsNullOrWhiteSpace($env:OPS_LOG_FILE)) { $jsonLog = @{ Timestamp = $timestamp Level = $Level Message = $Message } | ConvertTo-Json -Compress Add-Content -Path $env:OPS_LOG_FILE -Value $jsonLog } } } Export-ModuleMember -Function Write-OpsLog |