日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

利用ASP .NET Core的静态文件原理实现远程访问Nlog日志内容及解决遇到的坑

發(fā)布時(shí)間:2023/12/4 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用ASP .NET Core的静态文件原理实现远程访问Nlog日志内容及解决遇到的坑 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? 最近項(xiàng)目上試運(yùn)行發(fā)現(xiàn),很多時(shí)候網(wǎng)站出了問(wèn)題或者某個(gè)功能不正常,常常需要運(yùn)維人員去服務(wù)器里面查看一下日志,看看日志里面會(huì)產(chǎn)生什么異常,這樣導(dǎo)致每次都要去遠(yuǎn)程服務(wù)器很不方便,有時(shí)服務(wù)器是客戶(hù)保管的不能讓我們隨意遠(yuǎn)程,最后想到靜態(tài)文件方法將log日志讀出來(lái)打印到網(wǎng)頁(yè)上就可以替換遠(yuǎn)程服務(wù)器找到對(duì)應(yīng)log日志的目錄,節(jié)省了時(shí)間和溝通成本;另:我們是局域內(nèi)網(wǎng)系統(tǒng)不是互聯(lián)網(wǎng)所以對(duì)安全不用太考慮,這樣才能把日志輸出到頁(yè)面上面,如果互聯(lián)網(wǎng)產(chǎn)品或者安全比較高的不建議這么做

? ? ? 簡(jiǎn)單說(shuō)一下實(shí)現(xiàn)步驟:

? ? ? ? 一、 首先我們是通過(guò)Nlog來(lái)記錄日志的,Nlog怎么使用我這不介紹了,在上篇文章已有說(shuō)明

? ? ? ?二、 在Startup類(lèi)Configure中加入靜態(tài)文件路由的方式

#region 遠(yuǎn)程讀取日志
FileExtensionContentTypeProvider provider
= new FileExtensionContentTypeProvider();
provider.Mappings[
".log"] = "text/plain";
string basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
app.UseStaticFiles(
new StaticFileOptions()
{
FileProvider
= new PhysicalFileProvider(Path.Combine(basePath, "logs")),
ServeUnknownFileTypes
= true,
RequestPath
= new PathString("/logs"),
ContentTypeProvider
= provider,
DefaultContentType
= "application/x-msdownload", // 設(shè)置未識(shí)別的MIME類(lèi)型一個(gè)默認(rèn)z值

});
app.UseDirectoryBrowser(
new DirectoryBrowserOptions()
{
FileProvider
= new PhysicalFileProvider(Path.Combine(basePath, "logs")),
RequestPath
= new PathString("/logs"),
});
#endregion

? ? ? ?三、運(yùn)行界面:

? ? ??

? ? ? 四、點(diǎn)擊需要查看的日志發(fā)現(xiàn) 中文都是亂碼

? ?

五、然而直接通過(guò)文件打開(kāi)日志,并不顯示亂碼,大致判斷應(yīng)該是讀寫(xiě)的編碼格式不對(duì)

?

? ? 六、以上驗(yàn)證? 這樣說(shuō)明不是Nlog寫(xiě)入的時(shí)候?yàn)閬y碼,最后考慮是不是讀取的時(shí)候輸出為亂碼,我自己在logs文件夾下面建了一個(gè)text文件,利用網(wǎng)頁(yè)讀取信息,也不是亂碼,如圖所示:

? ? ? 七、經(jīng)過(guò)多次驗(yàn)證發(fā)現(xiàn)2個(gè)問(wèn)題:1.Nlog在寫(xiě)入日志建日志文件的時(shí)候編碼格式為default,實(shí)際格式ANSI,需要把文件改成通用編碼UTF-8 ;?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 這樣直接在nlog配置文件 文件寫(xiě)入規(guī)則里面加一個(gè)編碼設(shè)置【encoding="utf-8"】

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2. 讀取.log類(lèi)型時(shí)必須也要設(shè)置讀取類(lèi)型

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? 這樣直接將?provider.Mappings[".log"] = "text/plain";?修改為 provider.Mappings[".log"] = "text/plain;charset=utf-8";

? ? ? ? ?八、? ? ?運(yùn)行驗(yàn)證,中文沒(méi)有亂碼

? ??Demo源碼Git地址:https://github.com/lxshwyan/QuartzDemo.git

原文地址:https://www.cnblogs.com/lxshwyan/p/10910315.html

.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總?http://www.csharpkit.com?

總結(jié)

以上是生活随笔為你收集整理的利用ASP .NET Core的静态文件原理实现远程访问Nlog日志内容及解决遇到的坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。