在 ASP.NET MVC 项目中使用 Serilog
Using Serilog in ASP.NET MVC project
今天在工作中,我被要求在我现有的 ASP.NET MVC(非核心)项目中添加一些基本的日志记录功能。我被告知为此使用 Serilog。
然而,我没能找到任何在 MVC 中使用 Serilog 的合理示例,所有链接都简单地引用了 Core。我试图自己做所有事情。安装所有必要的包(Serilog,Serilog.Sinks.File)后,我创建了一个 "Logs" 文件夹并尝试了这个:
var log = new LoggerConfiguration()
.WriteTo.File("~/Logs/log.txt")
.CreateLogger();
log.Information("Hello from Serilog!");
我希望在文件夹中看到一个新文件,但没有。我还尝试使用更简单的路径 "log.txt" 并抢先在此文件夹中创建文件,但没有帮助。
有没有可能 MVC 根本不支持 Serilog?如果是,将内容记录到文本文件的简单方法是什么?
我怀疑 Serilog 是否理解日志文件路径中的 ~/
语法。 ~/
指的是您站点的虚拟根目录,但 Serilog 对虚拟根目录或网站一无所知。它只是一个日志框架,需要一个正常的路径。所以如果你想登录到你站点的Logs目录下一个叫做log.txt的文件,那么你需要把它转换成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 应该登录到您期望的位置,如果该目录存在并且它在那里有写权限。
Web 应用程序的文件记录将变得非常混乱。除非您的站点几乎没有任何使用,否则日志将变得难以管理和无用。我建议您查看其他 Serilog 接收器,并找到一个记录日志服务的接收器,例如 Seq (from the makers of Serilog) or Stackify Retrace.
今天在工作中,我被要求在我现有的 ASP.NET MVC(非核心)项目中添加一些基本的日志记录功能。我被告知为此使用 Serilog。
然而,我没能找到任何在 MVC 中使用 Serilog 的合理示例,所有链接都简单地引用了 Core。我试图自己做所有事情。安装所有必要的包(Serilog,Serilog.Sinks.File)后,我创建了一个 "Logs" 文件夹并尝试了这个:
var log = new LoggerConfiguration()
.WriteTo.File("~/Logs/log.txt")
.CreateLogger();
log.Information("Hello from Serilog!");
我希望在文件夹中看到一个新文件,但没有。我还尝试使用更简单的路径 "log.txt" 并抢先在此文件夹中创建文件,但没有帮助。
有没有可能 MVC 根本不支持 Serilog?如果是,将内容记录到文本文件的简单方法是什么?
我怀疑 Serilog 是否理解日志文件路径中的 ~/
语法。 ~/
指的是您站点的虚拟根目录,但 Serilog 对虚拟根目录或网站一无所知。它只是一个日志框架,需要一个正常的路径。所以如果你想登录到你站点的Logs目录下一个叫做log.txt的文件,那么你需要把它转换成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 应该登录到您期望的位置,如果该目录存在并且它在那里有写权限。
Web 应用程序的文件记录将变得非常混乱。除非您的站点几乎没有任何使用,否则日志将变得难以管理和无用。我建议您查看其他 Serilog 接收器,并找到一个记录日志服务的接收器,例如 Seq (from the makers of Serilog) or Stackify Retrace.