Tweaks to Write-LogEntry that was posted to Twitter by Trevor Sullivan @pcgeek86
His original PowerShell code:
function Write-LogEntry {My tweaks to the original PowerShell code:
[CmdletBinding()]
param (
[string] $Message,
[string] $Severity
)
$CallStack = Get-PSCallStack
$LogMessage = '{0} {1}: {2}: {3}' -f (Get-Date -Format u), $CallStack[1].FunctionName, $Severity, $Message
Add-Content -Path c:\temp\logfile.log -Value $LogMessage
}
function LogTester {
[CmdletBinding()]
param (
)
Write-LogEntry -Message Testing1 -Severity Information
Write-LogEntry -Message Testing2 -Severity Warning
Write-LogEntry -Message Testing3 -Severity Error
}
LogTester
Function Write-LogEntry {I did the following:
[CmdletBinding()]
param (
[string] $Message,
[string] $Severity,
[string] $Step
)
$CallStack = Get-PSCallStack
$LogMessage = '{0},{1},{2},{3},{4},{5}' -f $env:computername,((get-date).ToUniversalTime()), $CallStack[1].FunctionName, $Severity, $Message, $Step
Add-Content -Path c:\temp\logfile.csv -Value $LogMessage
}
function LogTester {
[CmdletBinding()]
param (
)
Write-LogEntry -Message Testing1 -Severity Information -Step 10
Write-LogEntry -Message Testing2 -Severity Warning -Step 20
Write-LogEntry -Message Testing3 -Severity Error -Step 55
}
LogTester
Changed the format of the date to UTC that was readable by Excel
Changed the output to a .CSV format and adding commas to the -f
Added the computername as the first entry in the text log
Added a parameter Step to the log
When I am consuming logs, lots of logs, I like tools like Excel to slice, dice, sort, and filter the data for me in a visual way.
When I write logging functions, I like to know what step tripped the log entry. So in my applications I set $Step to a number that is incremental from the last step I used this variable.
For example I set my step to 10 for the variable initially at the beginning of the application. Then at the start of each major piece of logic where I could trip the logging I increment the step by 10.
The steps then help me narrow down where in code the logging got tripped.
A future version of this could be to load the log into a SQL Table and also account for multiple applications writing to the same log.
Thank Trevor !!