In preparation for a deployment project I wrote some PowerShell functions to write messages to the SharePoint ULS.
You can download the PowerShell script here: http://gallery.technet.microsoft.com/Write-Messages-to-b59565bf
There are some samples in the package.
This is what it looks like in ULSViewer:
Red = Area or “Product” in ULSViewer
Green = Category
Blue = Severity Level
Purple = Message
You can use the script file “SPLogging.ps1” as PowerShell module. In the following sample the SPLogging.ps1 file is stored in the same location as “SPLoggingDemo.ps1”. Or you copy the content of “SPLogging.ps1” to your own file.
Import-Module "$(split-path $MyInvocation.MyCommand.Path)\SPLogging.ps1"
Here are some samples about how to create “Areas”
Add-SPDiagnostigLoggingArea -AreaName "TestArea" "PowerShell", "PS1", "PS2" | Add-SPDiagnostigLoggingArea
This is how you create categories:
Add-SPDiagnostigLoggingAreaCategory -AreaName "TestArea" -CategoryName "Category1" -TraceSeverityDefault High Add-SPDiagnostigLoggingAreaCategory "TestArea\Category2" -TraceSeverityDefault High "Test1", "Test2", "Test3" | Add-SPDiagnostigLoggingAreaCategory -AreaName "PowerShell" "Test1", "Test2", "Test3" | Add-SPDiagnostigLoggingAreaCategory -AreaName "PS1"You can add new categories by specifiying the area and the new category name seperatly or as formatted string: <area><backslash><category>
The following snipped shows you how to query the areas and categories you created in your PowerShell session.
Get-SPDiagnosticLoggingCategory -CategoryName "PowerShell\Test1" Get-SPDiagnosticLoggingCategory -AreaName "PowerShell" Get-SPDiagnosticLoggingCategoryYou have only access to your own areas and categories!!
Finally here are some examples of how to write messages to the SharePoint ULS. You can use PowerShell pipelining!
Write-SPDiagnosticLogging -CategoryName "PowerShell\Test1" -Message "Hello 1!" "Hello 2!" | Write-SPDiagnosticLogging -CategoryName "PowerShell\Test1" "Hello 3!", "Current date/time: {0}" | Write-SPDiagnosticLogging -CategoryName "PowerShell\Test2" -MessageArguments @(([DateTime]::Now)) -TraceSeverity "High"
Writing to the Windows Event Log is not supported at this moment.