Private/Invoke-ChainsawConsole.ps1



function Invoke-ChainsawConsole {
    [cmdletbinding()]
    param (
        [string] $Level,
        [string] $Message,
        [int] $ErrorCode,
        [string] $CallingFile,
        [int] $LineNumber
    )
 
    Process {
        $hash = Get-ChainsawConfig -Console
        $Msg = Format-ChainsawMessage -Template $hash.MessageTemplate `
            -Message $Message `
            -Level $Level `
            -CallingFile $CallingFile `
            -LineNumber $LineNumber `
            -ErrorCode $ErrorCode

        switch($Level.ToLower()) 
        {
            emergency { [System.Console]::ForegroundColor = [System.ConsoleColor]::DarkRed; break}
            alert {[System.Console]::ForegroundColor = [ConsoleColor]::DarkYellow; Break }
            critical {[System.Console]::ForegroundColor = [ConsoleColor]::DarkMagenta ; Break}
            error { [System.Console]::ForegroundColor = [ConsoleColor]::Red; Break }
            warning { [System.Console]::ForegroundColor = [ConsoleColor]::Yellow; Break}
            notice { [System.Console]::ForegroundColor = [ConsoleColor]::Blue; Break}
            info { [System.Console]::ForegroundColor = [ConsoleColor]::Green; Break }
            debug { [System.Console]::ForegroundColor = [System.ConsoleColor]::Magenta; Break; }
            default { [System.Console]::ForegroundColor = [ConsoleColor]::White; Break }
        }
        [System.Console]::WriteLine($Msg)

        # Set the color back to normal for messages that do not pass though the logger
        [Console]::ForegroundColor = [ConsoleColor]::White

    }
}