Monday, October 31, 2016

Tweaks to Write-LogEntry

Tweaks to Write-LogEntry that was posted to Twitter by Trevor Sullivan @pcgeek86

His original PowerShell code:
function Write-LogEntry {
    [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
My tweaks to the original PowerShell code:
Function Write-LogEntry {
    [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
I did the following:

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 !!


No comments:

Post a Comment