Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / productivity / SharePoint

Logging to Event Viewer with DiagnosticsLevel - SharePoint 2007

0.00/5 (No votes)
19 Dec 2010CPOL 10.8K  
Using the DiagnosticsLevel to decide on logging levels for custom webparts
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;
        // Get the current levels.
        IEnumerable<IDiagnosticsLevel> levels = dsg.GetItems();
        //
        foreach (IDiagnosticsLevel level in levels)
        {
            if (level.Name == "WebParts")
            {
                switch (level.EventSeverity)
                {
                    case EventSeverity.Error:               // Error : Information / Warning / Errors
                        break;
                    case EventSeverity.None:                // Do not log anything
                        return;
                    case EventSeverity.Warning:             // Warning : Information
                        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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)