Использование Serilog в проекте ASP.NET MVC - PullRequest
0 голосов
/ 28 января 2019

Сегодня на работе меня попросили добавить некоторые базовые функции ведения журналов в мой существующий проект ASP.NET MVC (не Core).Мне сказали использовать Serilog для этого.

Однако я не нашел разумного примера использования Serilog в MVC, все ссылки просто ссылаются на Core.Я пытался сделать все сам.После установки всех необходимых пакетов (Serilog, Serilog.Sinks.File), я создал папку «Журналы» и попробовал это:

var log = new LoggerConfiguration()
  .WriteTo.File("~/Logs/log.txt")
  .CreateLogger();

log.Information("Hello from Serilog!");

Я ожидал увидеть новый файл в папке, но там не былолюбой.Я также попытался использовать более простой путь «log.txt» и превентивно создать файл в этой папке, но это не помогло.

Возможно ли, что Serilog вообще не поддерживается для MVC?Если это так, что является простым способом записи чего-либо в текстовый файл?

1 Ответ

0 голосов
/ 28 января 2019

Я сомневаюсь, что Serilog понимает синтаксис ~/ в вашем пути к файлу журнала.~/ относится к виртуальному корню вашего сайта, но Serilog ничего не знает о виртуальных корнях или веб-сайтах.Это просто логическая структура и ожидает нормальный путь.Поэтому, если вы хотите войти в файл с именем log.txt в каталоге Logs вашего сайта, вам необходимо преобразовать его в правильный путь, понятный Serilog.

System.Web.Метод Hosting.HostingEnvironment.MapPath может преобразовывать относительные пути виртуального корня.Таким образом, ~/Logs/log.txt может стать чем-то вроде C:\path-to-your-site\Logs\log.txt.

Изменить на это:

var log = new LoggerConfiguration()
    .WriteTo.File(System.Web.Hosting.HostingEnvironment.MapPath("~/Logs/log.txt"))
    .CreateLogger();

log.Information("Hello from Serilog!");    

//note that importing the namespace will make it so you don't have to fully qualify the name.

Тогда Serilog должен войти в то место, которое вы ожидаете, если каталог существует и имеетнапишите там привилегии.

Регистрация файлов из веб-приложения будет очень грязной.Если ваш сайт практически не используется, журналы станут неуправляемыми и бесполезными.Я предлагаю вам взглянуть на другие приемники Serilog и найти тот, который регистрируется в службе регистрации, такой как Seq (от создателей Serilog) или Stackify Retrace .

...