專案開發過程寫過幾個wpf的小工具,在使用過程中就需要把軟體執行的情況以日誌的形式輸出到介面上,這裡就把用過的幾種方式總結一下。
輸出到richtextbox很簡單直接了,**如下:
/// /// 日誌輸出
///
///
public void writetolog(string message)
string strtime = "[" + system.datetime.now.tostring("yyyy-mm-dd hh:mm:ss") + "] ";
if (txtrich.extentheight > 200)
}
其中txtrich就是介面ui上richtextbox的名稱,在需要輸出日誌的地方呼叫方法writetolog()即可。
上面的方法只能算是「偽日誌」,畢竟只是將資訊輸出到ui控制項上,正統的日誌還是要靠nlog、log4net這樣的日誌元件。
2.1.安裝nlog.config
開啟專案的nuget管理器,搜尋nlog.config並安裝。
其實只安裝nlog也是可以的。但是nlog.config已經包含了nlog,而且有了nlog.config編寫配置檔案更方便些。
2.2.配置nlog
nlog.config安裝成功後,專案跟目錄下會增加nlog.config和nlog.xsd兩個檔案。修改nlog.config檔案,對輸出日誌的格式、輸出形式、跟蹤級別進行配置。
<?xml version="1.0" encoding="utf-8" ?>
xmlns
=""xmlns:xsi
=""xsi:schemalocation
=" nlog.xsd"
autoreload
="true"
throwexceptions
="false"
internalloglevel
="off"
internallogfile
="c:\temp\nlog-internal.log"
>
name
="myvar"
value
="myvalue"
/>
>
輸出至檔案
-->
name
="info_file"
xsi:type
="file"
filename
="$/logs/$.log"
layout
="$ $} $"
/>
name
="error_file"
xsi:type
="file"
filename
="$/logs/$_error.log"
layout
="$ $} $ $"
/>
targets
>
>
name
="*"
minlevel
="info"
writeto
="info_file"
/>
name
="*"
minlevel
="error"
writeto
="error_file"
/>
rules
>
nlog
>
在**中定義日誌管理器,直接呼叫。
//定義日誌
private logger logger = logmanager.getcurrentclasslogger();
//呼叫日誌
private void btnlog_click(object sender, routedeventargs e)
啟動程式,在執行過程中產生的資訊就會輸出到指定目錄的檔案中。也可以通過修改配置檔案,將日誌輸出到其他目標位置。
將上述兩種方法結合起來,既可以在ui介面實時顯示,也能在後台穩定輸出。幸運的是可以使用nlog.wpf.richtextbox這個庫,雖然時間比較久遠了,但是用起來還是很方便的。開啟nuget管理器,安裝nlog.wpf.richtextbox。安裝完成後專案會增加wpfrichtextboxtarget.cs、wpfrichtextboxrowcoloringrule.cs、wpfrichtextboxwordcoloringrule.cs三個檔案,具體使用方法可以參考附帶的txt檔案。
在需要輸出日誌的地方修改**如下:
private void mainwindow_loaded(object sender, routedeventargs e)
] :: [$] :: $:$ :: $ $",
controlname = "你的控制項名稱",
formname = gettype().name,
autoscroll = true,
maxlines = 1000,
usedefaultrowcoloringrules = true,
};logmanager.reconfigexistingloggers();
});}
同樣是把日誌輸出到richtextbox,結合了上兩種方法,對於軟體執行的監測和問題檢查會有很大的幫助。 五月三十一日
花月的結束。明天就是六一了,兒童節哦,但是要體能測試。中間還有1000公尺。本來這也沒什麼,但是太久沒運動了,直接來個1000公尺恐怕還真吃不消,跑完跑及格是沒問題的,然而後遺症會很嚴重的,會幾天都難受。網路實踐的內容又往後做了一點,完成了vpn的架設,也完成了對路由的埠對映,開通了遠端桌面。遠端桌...
八月十一日 大霧
早上鬧鐘一直沒有響,當老於他們的手機響了以後,我覺得不對勁 已看手機,才發現手機已經關機了 手機又莫名其妙的關機了 飛快地洗漱完畢,騎車就飛馳到車站,還好,到公司的時候照樣早了20多分鐘 昨天終於發工資了,我的第乙份工資。本來我應該是興奮得,但是由於寶寶不開心,我也當然不開心了 其實我最不開心的不是...
五月十一日 課後總結
數論 重點 篩法 vector int ret for int i 2 i i x i while x i 0 if x 1 ret.push back x return ret 這個pushback就是推乙個數進到ret vector是stl資料標準庫里的乙個向量 但他既可以做陣列用也可以當鍊表使...