利用ASP .NET Core的靜態文件原理實現遠程訪問Nlog日誌內容及解決遇到的坑

      最近項目上試運行發現,不少時候網站出了問題或者某個功能不正常,經常須要運維人員去服務器裏面查看一下日誌,看看日誌裏面會產生什麼異常,這樣致使每次都要去遠程服務器很不方便,有時服務器是客戶保管的不能讓咱們隨意遠程,最後想到靜態文件方法將log日誌讀出來打印到網頁上就能夠替換遠程服務器找到對應log日誌的目錄,節省了時間和溝通成本;另:咱們是局域內網系統不是互聯網因此對安全不用太考慮,這樣才能把日誌輸出到頁面上面,若是互聯網產品或者安全比較高的不建議這麼作git

      簡單說一下實現步驟:github

        1、 首先咱們是經過Nlog來記錄日誌的,Nlog怎麼使用我這不介紹了,在上篇文章已有說明安全

       2、 在Startup類Configure中加入靜態文件路由的方式服務器

 #region 遠程讀取日誌
            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", // 設置未識別的MIME類型一個默認z值

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

       3、運行界面:app

      

      4、點擊須要查看的日誌發現 中文都是亂碼運維

   5、然而直接經過文件打開日誌,並不顯示亂碼,大體判斷應該是讀寫的編碼格式不對ide

 

    6、以上驗證  這樣說明不是Nlog寫入的時候爲亂碼,最後考慮是否是讀取的時候輸出爲亂碼,我本身在logs文件夾下面建了一個text文件,利用網頁讀取信息,也不是亂碼,如圖所示:網站

 

      7、通過屢次驗證發現2個問題:1.Nlog在寫入日誌建日誌文件的時候編碼格式爲default,實際格式ANSI,須要把文件改爲通用編碼UTF-8 ; 編碼

                                                    這樣直接在nlog配置文件 文件寫入規則裏面加一個編碼設置【encoding="utf-8"】spa

                                                     2. 讀取.log類型時必須也要設置讀取類型

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

         8、     運行驗證,中文沒有亂碼

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

相關文章
相關標籤/搜索