[IOT]使用 MetroLog 來記錄 UWP 的 Log

最近我們將 UWP 程式部署到 Windows 10 IoT Core上時,

剛開始執行時,都OK。

但隔一段時間後,一些功能似乎沒有在運作。

懷疑程式可以有什麼 Exception ,而目前只有使用 Debug.WriteLine 去顯示訊息。

有看到 UWP 的 Logging Sample,是產生 ETL 檔。

可以使用 事件檢視器 開來看。

後來找到 MetroLog ,它是產生文字檔,對於輕量使用者來說,是足夠了。

以下是使用的方式,

1.從 NuGet 加入 MetroLog, 如下,

2.在 app.xaml.cs 的 App 建構子中,加入使用 MetroLog,如下(LogLevel 請依需求自行調整),

//using MetroLog;
//using MetroLog.Targets;
#if DEBUG
	LogManagerFactory.DefaultConfiguration.AddTarget(LogLevel.Trace, LogLevel.Fatal, new FileStreamingTarget());
#else
	LogManagerFactory.DefaultConfiguration.AddTarget(LogLevel.Error, LogLevel.Fatal, new FileStreamingTarget());
#endif

3.在要使用 MetroLog 的程式建立 Log 物件(如,MainPage.xaml.cs 所以class name 是 MainPage),如下,

//using MetroLog;
private ILogger log = LogManagerFactory.DefaultLogManager.GetLogger<MainPage>();

4.要記Log時,呼叫 log 物件的 Trace, Debug, Info, Warn ...如下,

this.log.Trace("This is a trace message.");
this.log.Debug("This is a debug message.");
this.log.Info("This is a info message.");
this.log.Warn("This is a warn message.");
this.log.Error("This is a error message.");
this.log.Fatal("This is a fatal message.");

寫好了之後,就可以將程式部到 Windows 10 IoT Core 上面去,

如果要看Log的話,可以透過網芳來取得 MetroLog 的資料。

5.連到 \\[IoTCore ip or name]\c$ ,並輸入帳號及密碼 (Iot Core 也可透過網芳來access 哦!),如下,

6.到 \\[IoTCore ip or name]\c$\Data\Users\DefaultAccount\AppData\Local\Packages\[package name]\LocalState 找到 MetroLog 的目錄,裡面會以 Log-日期.log 

要看Log直接開起來看就可以了哦!

參考資料

Logging Sample

Adicionando logs em Universal Apps

Using Windows file sharing to transfer files to and from your device

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^