include/Seq.ps1
@{ Name = 'Seq' Description = 'Sends log data to the designated Seq server web service' Configuration = @{ Url = @{Required = $true; Type = [string]; Default = $null } ApiKey = @{Required = $false; Type = [string]; Default = $null } Properties = @{Required = $false; Type = [hashtable]; Default = $null } Level = @{Required = $false; Type = [string]; Default = $Logging.Level } } Logger = { param( [hashtable] $Log, [hashtable] $Configuration ) $Body = @{ "@t" = $Log.TimestampUtc "@l" = $Log.Level.substring(0,1).toupper()+$Log.Level.substring(1).tolower() "@m" = $Log.Message "@mt" = $Log.RawMessage } if ($Log.ExecInfo) { $Body["@x"] = $Log.ExecInfo.ScriptStackTrace } $Body += $Log if($null -ne $Configuration.Properties) { $Body += $Configuration.Properties } if ($Configuration.ApiKey) { $Url = '{0}/api/events/raw?clef&apiKey={1}' -f $Configuration.Url, $Configuration.ApiKey } else { $Url = '{0}/api/events/raw?clef' -f $Configuration.Url } Invoke-RestMethod -Uri $Url -Body ($Body | ConvertTo-Json -Compress) -Method POST | Out-Null } } |