[英]Using Serilog in ASP.NET MVC project
今天,我被要求在我現有的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 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.