Private/Write-Log.ps1

Function Write-Log {
    [CmdletBinding()]
    param (
        [parameter(Mandatory=$False)]
            [ValidateNotNullOrEmpty()]
            [String] $Message = "",
        [parameter(Mandatory=$False)][int] $Severity = 1,
        [parameter(Mandatory=$False)][string] $LogFile = '',
        [parameter(Mandatory=$False)][switch] $ShowMsg
        
    )
    switch ($Severity) {
        1 {$Category='Info'; break}
        2 {$Category='Warning'; break}
        3 {$Category='Error'; break}
        default {$Category='Info'; break}
    }
    $MsgTxt = "$(Get-Date -f 'yyyy-M-dd HH:mm:ss') $Category $Message"
    if (($logfile -ne $null) -and ($LogFile -ne '')) {
        $MsgTxt | Out-File -FilePath $LogFile -Append -NoClobber -Encoding Default
    }
    if ($showmsg) {
        switch ($Severity) {
            3 { Write-Host $Message -ForegroundColor Red }
            2 { Write-Host $Message -ForegroundColor Yellow }
            1 { Write-Host $Message }
        }
    }
    else {
        Write-Verbose $MsgTxt
    }
}