68 lines
1.7 KiB
PowerShell
68 lines
1.7 KiB
PowerShell
function Get-LogTimestampInternal {
|
|
return (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
|
|
}
|
|
|
|
function Get-LogColorInternal {
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$Level
|
|
)
|
|
|
|
switch ($Level.ToUpperInvariant()) {
|
|
"OK" { return "Green" }
|
|
"INFO" { return "Gray" }
|
|
"WARN" { return "Yellow" }
|
|
"ERROR" { return "Red" }
|
|
"STEP" { return "Cyan" }
|
|
"DEBUG" { return "DarkGray" }
|
|
default { return "White" }
|
|
}
|
|
}
|
|
|
|
function Write-Log {
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$Message,
|
|
|
|
[Parameter(Mandatory = $false)]
|
|
[ValidateSet("INFO", "OK", "WARN", "ERROR", "STEP", "DEBUG")]
|
|
[string]$Level = "INFO",
|
|
|
|
[Parameter(Mandatory = $false)]
|
|
[switch]$NoTimestamp
|
|
)
|
|
|
|
$levelToken = "[$($Level.ToUpperInvariant())]"
|
|
$padding = " " * [Math]::Max(1, (10 - $levelToken.Length))
|
|
$prefix = if ($NoTimestamp) { "" } else { "[$(Get-LogTimestampInternal)] " }
|
|
$line = "$prefix$levelToken$padding$Message"
|
|
|
|
Write-Host $line -ForegroundColor (Get-LogColorInternal -Level $Level)
|
|
}
|
|
|
|
function Write-LogStep {
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$Message
|
|
)
|
|
|
|
Write-Log -Level "STEP" -Message $Message
|
|
}
|
|
|
|
function Write-LogStepResult {
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[ValidateSet("OK", "FAIL")]
|
|
[string]$Status,
|
|
|
|
[Parameter(Mandatory = $false)]
|
|
[string]$Message
|
|
)
|
|
|
|
$level = if ($Status -eq "FAIL") { "ERROR" } else { "OK" }
|
|
$text = if ([string]::IsNullOrWhiteSpace($Message)) { $Status } else { $Message }
|
|
Write-Log -Level $level -Message $text
|
|
}
|
|
|
|
Export-ModuleMember -Function Write-Log, Write-LogStep, Write-LogStepResult
|