Here is a working code snippet (C# class) to write custom errors or logs to ULS log.
An entry to ULS logs can be written using the below snippet with make use of the above class.
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using System.Collections.Generic;
namespace CustomLogging
{
class LoggingService : SPDiagnosticsServiceBase
{
public static string diagnostcAreaName = "CustomLogging";
public static string errorPrefix = "CustomLogging: ";
private LoggingService()
: base("CustomLogging Logging Service", SPFarm.Local)
{
}
protected override IEnumerable<SPDiagnosticsArea> ProvideAreas()
{
List<SPDiagnosticsArea> areas = new List<SPDiagnosticsArea>
{
new SPDiagnosticsArea(diagnostcAreaName, new List<SPDiagnosticsCategory>
{
new SPDiagnosticsCategory("CustomLogging", TraceSeverity.Unexpected, EventSeverity.Error)
})
};
return areas;
}
public static void LogError(string message, EventSeverity eventSeverity)
{
SPSecurity.RunWithElevatedPrivileges(delegate ()
{
SPDiagnosticsService diagnosticService = SPDiagnosticsService.Local;
diagnosticService.WriteTrace(0, new SPDiagnosticsCategory(diagnostcAreaName, TraceSeverity.Monitorable, eventSeverity),
TraceSeverity.Monitorable, errorPrefix + "{0}", new object[] { message });
});
}
}
}
An entry to ULS logs can be written using the below snippet with make use of the above class.
try
{
//Business logic
}
catch (Exception ex)
{
LoggingService.LogError(ex.Message + " " + ex.StackTrace + "\r" + ex.Source, (EventSeverity)EventSeverity.Information);
}