Я пытаюсь использовать Serilog (как консольный, так и файловый) в консольном приложении .NET Core.
В моем основном классе я инициализирую свой регистратор следующим образом:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.File("log.txt", outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{Method}) {Message}{NewLine}{Exception}")
.WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{Method}) {Message}{NewLine}{Exception}")
.CreateLogger();
С {SourceContext}.{Method}
Я хотел бы знать, из какого класса и метода я веду журнал.
Я хотел бы использовать этот самый регистратор с такими же настройками в других моих классах. Так, например Я инициализирую регистратор в одном из них так:
private readonly ILogger _log = Log.ForContext<MyClass>();
Но я сомневаюсь, что это генерирует журнал, который я хочу, так как, когда я пытаюсь зарегистрировать исключение, подобное этому
Log.Error(ex.Message);
журнал, который я получаю, не упоминает класс и метод:
2018-11-08 09: 24: 51.647 +01: 00 [Ошибка] (.) Строка '11 / 01/2018
11:43:00 'не был распознан как действительный DateTime.
Кажется, что в методе Main произошла ошибка. Итак:
- Нужно ли инициализировать все настройки логгера для каждого класса?
- Сохранить настройки логгера в файле и прочитать из этого файла?
- Что-то не так с тем, как я пытаюсь войти в мой код?