using System; using System.Collections.Generic; using System.Web; using ElmahCore; using ElmahCore.MySql; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; namespace Sony.Filtr.ErrorLogging { public class ErrorLoggingManager { private static readonly ErrorLoggingManager _instance = new ErrorLoggingManager(_configuration); private static IHttpContextAccessor _httpContextAccessor; private static IConfigurationRoot _configuration; public static ErrorLoggingManager Instance { get { return _instance; } } public ErrorLoggingManager(IConfigurationRoot configuration) { _configuration = configuration; } public string CurrentApplicationName { get; set; } public void LogError(Exception ex) { try { var dic = new Dictionary() { { "connectionString", _configuration.GetConnectionString("dbErrorLogging") }, { "applicationName", CurrentApplicationName ?? "Application" } }; ErrorLog errorLog = new MySqlErrorLog(_configuration.GetConnectionString("dbErrorLogging")); errorLog.Log(new Error(ex)); } catch (Exception e) { //We don't want logging to cause further errors... } } public void LogError(string errorMessage) { var exception = new Exception(errorMessage); this.LogError(exception); } public void LogError(Exception ex, string errorMessage) { this.LogError($"{errorMessage}{Environment.NewLine}ExceptionMessage: {ex.Message} ExceptionStack: {ex.StackTrace}"); } } }