Я сомневаюсь, что 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 .