In my article "Simplifying SharePoint Debugging By Creating the Troubleshooting Toolbox
", I have stated the following :
"I’d also like to point out that you can write code that incorporates logging to MOSS logs. Writing to the same trace log alleviates the need for developers to log their development information in other places such as the Windows Event Log, which is more commonly used by system administrators."
Unfortunately this comes with 3 gotchas :
- You cannot set the log event level (e.g. low, medium, and critical) as it’ll always display the error level in the trace logs as High.
- Also you cannot control the trace category as it'll always display the category as "General".
- The logger is located in 12\ISAPI \Microsoft.Office.Server.dll and therefore it’s only available with the MOSS install, not WSS 3.0.
What if you need to write into SharePoint trace logs while having full control on the error level and category?
Enter SharePoint Logging Library
- Get the "SharePoint Logging Library" from CodePlex.
- Add a reference to AymanElHattab.SharePoint.Logging.dll .
- Add a using statement to AymanElHattab.SharePoint.Logging namespace.
- Use the library as follows :
SharePointLogger.LogInformation("x = " + x);
SharePointLogger.LogMessageWithSeverityAndCategory("Hi", SharePointLogger.TraceSeverity.High, "My Category");
- Get your code executed , then open the trace logs.
As you might have noticed :
- You can call the public methods SharePointLogger.LogStartOfMethod() and SharePointLogger.LogEndOfMethod() for writing to SharePoint Trace Logs .You don't need to pass the method or class name, this will be automatically logged by Reflection as shown in the figure above : "Beginning of NameSpace.ClassName.MethodName Method".
- You can control the severity and the category when you use the LogMessageWithSeverityAndCategory() Method.
- "General" is the default category when you use the methods that doesn't accept a parameter for the category.
- You can log exceptions and their stack traces by passing the exception object to the public LogException() Method.