CssSolution/CSS_Solution/ExceptionHandler.cs

55 lines
2.2 KiB
C#
Raw Permalink Normal View History

2024-03-12 08:15:15 +00:00
using Microsoft.Extensions.Logging;
using System.Configuration;
namespace CSS_Solution
{
internal class ExceptionHandler
{
ILogger? exception_logger;
public ExceptionHandler()
{
exception_logger = Initialize.loggerFactory?.CreateLogger("Global exception");
if(exception_logger == null)
throw new Exception("logger create failed");
}
public void ApplicationThreadExceptionHandler(object sender, System.Threading.ThreadExceptionEventArgs e)
{
Exception exception = e.Exception;
if (exception_logger == null)
{
exception_logger = Initialize.default_logger != null ? Initialize.default_logger : LoggerFactory.Create(builder =>
{
Console.WriteLine(builder);
builder.AddConsole();
}).CreateLogger("Global exception");
if (exception_logger == null)
{
Console.WriteLine($"[{DateTime.Now}] Weird!! Logger can't be initialized!");
Console.WriteLine($"[{DateTime.Now}] However, an exception has been caught");
Console.WriteLine($"[{DateTime.Now}] Message:\n{exception.Message}\nStackTrace:\n{exception.StackTrace}\n");
Program.mainForm?.Close();
return;
}
else
exception_logger.LogWarning($"[{DateTime.Now}] Something wrong with the exception logger, you should check it out.");
}
if (exception == null)
{
exception_logger.LogWarning($"[{DateTime.Now}] Weird!! Null exception catched");
return;
}
string info = $"[{DateTime.Now}] Message:\n{exception.Message}\nStackTrace:\n{exception.StackTrace}\n";
switch (exception)
{
case ConfigurationErrorsException:
exception_logger.LogError(info);
break;
default:
exception_logger.LogWarning(info);
break;
}
}
}
}