Serilog SelfLog ничего не выводит
На самом деле я пытаюсь устранить проблему, когда приемник MSSqlServer ничего не записывает в мои таблицы базы данных. Мне посоветовали подключить SelfLog, чтобы посмотреть, что происходит, но на самом деле он ничего не выводит, и я не уверен, что что-то упустил. Это метод настройки:
public SerilogLogger()
{
Serilog.Debugging.SelfLog.Enable(
msg => System.Diagnostics.Trace.WriteLine(msg));
_logger = new LoggerConfiguration()
.WriteTo.MSSqlServer(@"Server=<MyConnectionString>", "Logs")
.WriteTo.Trace()
.CreateLogger();
}
Методы в этом классе просто вызывают методы журнала на _logger
который установлен здесь. Журналы, которые я создаю, записываются в окно вывода через приемник трассировки, но в базу данных ничего не попадает, и Serilog не выводит ничего, не говоря уже об ошибках. Я даже попытался преднамеренно испортить строку подключения, чтобы заставить ее выводить что-либо, а не кубики. Какие-нибудь мысли?
1 ответ
Я знаю, что это довольно старый вопрос, но я потратил пару дней на решение аналогичной проблемы, поэтому оставлю здесь несколько предложений.
Если вы используете глобальный
Log
объект, убедитесь, что вы действительно отправляете вещи. Serilog ставит в очередь запросы и отправляет их все, как только вы выполните:Log.CloseAndFlush();
Без этого ничего не будет зарегистрировано. Обязательно выполните это в самом конце, так как после этого регистратор будет закрыт ( документация по жизненному циклу Serilog).
Если вы не используете глобальный объект, это должно быть выполнено после удаления вашего объекта регистрации.
Попытайтесь увидеть, действительно ли Serilog показывает ошибки, форсируя их. Просто удалите один символ в строке подключения или что-то подобное, чтобы увидеть, появляется ли исключение Serilog в консоли.