gpt4 book ai didi

c# - 在 ASP.NET MVC 项目中使用 Serilog

转载 作者:行者123 更新时间:2023-12-04 16:29:12 24 4
gpt4 key购买 nike

今天在工作中,我被要求在我现有的 ASP.NET MVC(不是 Core)项目中添加一些基本的日志功能。我被告知为此使用 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 (来自 Serilog 的制造商)或 Stackify Retrace .

关于c# - 在 ASP.NET MVC 项目中使用 Serilog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54404561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com