private/Set-LoggingVariables.ps1
function Set-LoggingVariables { #Already setup if ($Logging -and $LogTargets -and $LevelNames) { return } Write-Verbose -Message ("{0} :: Initial variable setup.") $Script:NOTSET = 0 $Script:DEBUG = 10 $Script:INFO = 20 $Script:WARNING = 30 $Script:ERROR_ = 40 $initialLevels = [hashtable]::Synchronized(@{ $NOTSET = 'NOTSET' $ERROR_ = 'ERROR' $WARNING = 'WARNING' $INFO = 'INFO' $DEBUG = 'DEBUG' 'NOTSET' = $NOTSET 'ERROR' = $ERROR_ 'WARNING' = $WARNING 'INFO' = $INFO 'DEBUG' = $DEBUG }) New-Variable -Name LevelNames -Scope Script -Option Constant -Value $initialLevels New-Variable -Name Logging -Scope Script -Option Constant -Value ([hashtable]::Synchronized(@{})) New-Variable -Name LogTargets -Scope Script -Option Constant -Value ([hashtable]::Synchronized(@{})) New-Variable -Name ScriptRoot -Scope Script -Option Constant -Value ([System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Module.Path)) New-Variable -Name Defaults -Scope Script -Option Constant -Value @{ Level = $Script:NOTSET Format = '[%{timestamp:+%Y-%m-%d %T%Z}] [%{level:-7}] %{message}' Timestamp = '%Y-%m-%dT%T%Z' CallerScope = 1 } $Script:Logging.Level = $Defaults.Level $Script:Logging.LevelNo = Get-LevelNumber -Level $Defaults.Level $Script:Logging.Format = $Defaults.Format $Script:Logging.CallerScope = $Defaults.CallerScope $Script:Logging.Targets = [hashtable]::Synchronized(@{}) $Script:Logging.CustomTargets = [String]::Empty } |