Classes/LogManager.ps1
|
class LogManager { [string]$LogFile LogManager([string]$Path) { $this.LogFile = $Path } # Overload 1: only message [void]Log([string]$Message) { $this.Log($Message, "INFO", $false) } # Overload 2: message + level [void]Log([string]$Message, [string]$Level) { $this.Log($Message, $Level, $false) } [void]Log([string]$Message, [string]$Level, [bool]$NotToFile) { # Timestamp $timestamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss") # Format log line $logLine = "[$timestamp]`t[$Level]`t$Message" # Choose color based on level $color = $null switch ($Level) { "INFO" { $color = "White" } "WARN" { $color = "Yellow" } "ERROR" { $color = "Red" } "DEBUG" { $color = "Cyan" } default { $color = "White" } } # Write to console with color Write-Host $logLine -ForegroundColor $color # Write to file unless -NotToFile was used if (-not $NotToFile) { # Ensure directory exists $logDir = Split-Path $this.LogFile if (-not (Test-Path $logDir)) { New-Item -Path $logDir -ItemType Directory -Force | Out-Null } Add-Content -Path $this.LogFile -Value $logLine } } } |