Loggare stringhe ed eccezioni in una lista di SharePoint 2010

Tags: C#, SharePoint 2010

Una semplice classe che consente di loggare delle stringhe o eccezioni in una lista di SharePoint 2010.

Per la creazione della lista è possibile utilizzare il seguente codice:

using (var web = new SPSite("mysite").OpenWeb())
{
    if (web.Lists.TryGetList(ListToLog) == null)
    {
        web.Lists.Add(ListToLog, "Logs for " + List_JOB_NAME, SPListTemplateType.GenericList);
        web.Lists[ListToLog].Fields.Add("Description", SPFieldType.Note, false);
        web.Update();
        SPView view = web.Lists[ListToLog].DefaultView;
        view.ViewFields.Add("Description");
        view.Update();
    }
}

Mentre per scrivere nella lista:

public class SPLogger
{
    public string UrlListToLog { get; set; }
    public string TitleListToLog { get; set; }
    public string SiteName { get; set; }

    public void Logga(string title, string log)
    {
        try
        {
            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (SPSite site = new SPSite(UrlListToLog))
                {
                    using (SPWeb web = site.OpenWeb())
                    {

                        SPList list = web.Lists[TitleListToLog];
                        web.AllowUnsafeUpdates = true;
                        var item = list.AddItem();
                        item["Title"] = title;
                        item["Description"] = log;
                        item.Update();
                        web.AllowUnsafeUpdates = false;
                    }
                }
            });
        }
        catch
        {
            throw;
        }
    }
    public void Logga(Exception ex)
    {
        try
        {
            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (SPSite site = new SPSite(UrlListToLog))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        string message = string.Empty;
                        message += ex.Message + " Stack Trace: " + ex.StackTrace;
                        if (ex.InnerException != null)
                        {
                            message += "InnerException1: " + ex.InnerException.Message;
                            if (ex.InnerException.InnerException != null)
                            {
                                message += "InnerException2: " + ex.InnerException.InnerException.Message;
                                if (ex.InnerException.InnerException.InnerException.InnerException != null)
                                {
                                    message += "InnerException2: " + ex.InnerException.InnerException.InnerException.Message;
                                }
                            }
                        }
                        SPList list = web.Lists[TitleListToLog];
                        web.AllowUnsafeUpdates = true;
                        var item = list.AddItem();
                        item["Title"] = "EXCEPTION";
                        item["Description"] = message;
                        item.Update();
                        web.AllowUnsafeUpdates = false;
                    }
                }
            });
        }
        catch
        {
            throw;
        }
    }
}
Add a Comment