55 lines
2.2 KiB
C#
55 lines
2.2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|