The most least talked about is how to get the current DiagnosticsLevel of the "Areas" in SharePoint 2007. Unlike SharePoint 2010, finding the current DiagnosticsLevel in SharePoint 2007 is a bit tedious.
If you want to decided on your web-part logging level(s) without registering a custom area, following is the easy way:
public static void LogMessage(String errormsg, EventLogEntryType eventType, int eventID, short category)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPDiagnosticsService dsg = SPDiagnosticsService.Local;
IEnumerable<IDiagnosticsLevel> levels = dsg.GetItems();
foreach (IDiagnosticsLevel level in levels)
{
if (level.Name == "WebParts")
{
switch (level.EventSeverity)
{
case EventSeverity.Error:
break;
case EventSeverity.None:
return;
case EventSeverity.Warning:
if (eventType == EventLogEntryType.Error) return;
break;
case EventSeverity.Information:
if (eventType != EventLogEntryType.Information) return;
break;
}
break;
}
}
if (!EventLog.SourceExists("MyEventSource"))
{
EventLog.CreateEventSource("MyEventSource", "MyAppLogs");
}
EventLog.WriteEntry("MyEventSource", errormsg, eventType, eventID, category);
});
}
This is a
static
method; so add it to your Web-Part and you can start logging.
Enjoy coding.