2011-05-20 34 views
2

目前,我通過將StackFrame抓住當前文件/行號:記錄文件名,日誌中的行號。我需要通過StackFrame嗎?

Log.Message(new StackFrame(0, true), "FAILED to start cooling."); 

凡在日誌類:

public void Message(StackFrame Callstack, string message) 
{ 
    string logMessage = string.Format("{0} {1}:{2} {3} \t{4}", DateTime.Now.ToString(), Callstack.GetFileName(), Callstack.GetFileLineNumber(), Callstack.GetMethod(), message); 

    //Write to console 
    Console.WriteLine(logMessage); 

    //write to file 
} 

我需要每次都通過將StackFrame的日誌.Message()方法?這可以通過它自己的方法完成而不通過它嗎?有一個更簡單的方法嗎?

謝謝。

回答

1

你可以這樣做:

public void Message(string message) { 
    StackFrame callstack = new StackFrame(1, true); 
    // ... 
} 

1跳過調用堆棧的消息的方法部分,得到它的調用者。

0

您可以。 StackFrame的第一個構造函數參數定義了要跳過的幀數。因此,在Message()中創建對象實例時,只需傳遞1,它將顯示呼叫幀(您使用Message()時的呼叫)。

相關問題