[Tips]StackTrace的小應用

  • 4568
  • 0
  • 2008-12-16

利用StackTrace來記錄log

當在Code裡面,可能要記log或是判斷被哪個method呼叫時要進行額外的動作。

這個時候很有可能需要用到Stack。

上次從黑暗執行緒大大的網站上,找到了很簡單的用法,

主要是使用兩個namespace:System.Diagnostics與System.Reflection。

由於使用到這兩個namespace,所以使用上要更小心效率的問題。

我個人是用在記log,當實際上線的時候,只需要調整flag就可避免執行該記log的片段。

首先先匯入兩個namespace。

using System.Diagnostics;
using System.Reflection;

接著只需要知道三個好用的class:StackTrace、StackFrame與MethodBase。

由於記log的部分是在baseclass底下,所以我要trace的是該method往上兩層的method stack,所以GetFrame的參數是丟2。

StackTrace st = new StackTrace(true);
StackFrame sf = st.GetFrame(2);
MethodBase mb = sf.GetMethod();
logger.Debug(sf.GetFileName() + " 行數: " + sf.GetFileLineNumber().ToString());
logger.Debug(mb.ReflectedType.FullName + "." + mb.Name+"()");

記錄log方面,則是使用log4net。


或許您會對下列培訓課程感興趣:

  1. 2021/1/9:【針對遺留代碼加入單元測試的藝術】202101 - 台北
  2. 2021/1/10:【極速開發+】 202101 台北
  3. 2021/2/20~2021/2/21:【演化式設計】測試驅動開發與持續重構 202102

想收到第一手公開培訓課程資訊,或想詢問企業內訓、顧問、教練、諮詢服務的,請洽 Facebook 粉絲專頁:91敏捷開發之路