У меня есть несколько проектов в моем решении, большинство из которых - службы Windows. У меня есть log4net, настроенный для каждого (создание отдельного файла журнала для каждого), а также приложение Raygun для log4net. Я хотел бы поймать UnhandledException для каждого из этих проектов и получить информацию о том, откуда они появились (как в файле журнала, так и в панели управления Raygun), и я хотел бы сделать это в одном месте для всех проектов в моем решении.log4net logging UnhandledException исключения из разных проектов
Таким образом, я создал отдельный статический класс и метод, которые регистрировали бы эти исключения.
Как я могу войти исключение, чтобы мой файл журнала будет показывать класс, создавший эту ошибку, а не статический класс Logger (а также иметь raygun.io панель показать правильное происхождение, за исключением) =>
Logger.UnhandledException [ERROR] - это уже неправильно. это должно быть имя класса, в котором возникло исключение
Могу ли я создать потокобезопасный синглтон для этого? Это даже правильный подход?
Статический класс: сервис
public static class Logger
{
private static readonly ILog Log = LogManager.GetLogger(Assembly.GetEntryAssembly().FullName);
public static void UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Log.Error(e);
}
}
Окна:
private static void Main(string[] args)
{
Configure.Serialization.Xml();
// Unhandled exceptions - subscribe to the event (I would do this to all my projects in the solution)
AppDomain.CurrentDomain.UnhandledException += Logger.UnhandledException;
}