Все вошли как будто они из метода Main - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь использовать 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 произошла ошибка. Итак:

  1. Нужно ли инициализировать все настройки логгера для каждого класса?
  2. Сохранить настройки логгера в файле и прочитать из этого файла?
  3. Что-то не так с тем, как я пытаюсь войти в мой код?
...