有沒有這樣做的一種預先的方法,或者我們是否需要定義我們自己的自定義格式化程序?企業庫日誌記錄:如何在每個日誌條目中打印方法名稱和行號。
1
A
回答
-1
您可以通過在配置文件中配置您的TextFormatter來獲取方法名稱。我已經包含了整個格式化程序爲您提供了一些上下文,但要查找的關鍵是模板屬性中的{property(MethodName)}。我不知道如何獲得行號。
<loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
<formatters>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
template="Timestamp: {timestamp}{newline}
Title: {title}{newline}
Message: {message}{newline}
Category: {category}{newline}
Priority: {priority}{newline}
EventId: {eventid}{newline}
Severity: {severity}{newline}
Machine: {localMachine}{newline}
App Domain: {localAppDomain}{newline}
ProcessId: {localProcessId}{newline}
Process Name: {localProcessName}{newline}
Thread Name: {threadName}{newline}
Win32 ThreadId:{win32ThreadId}{newline}
Extended Properties: {dictionary({key} - {value}{newline})}
Type: {property(TypeName)}{newline}
Method: {property(MethodName)}{newline}
Parameters: {dictionary({key} : {value};)}{newline}
Return Value: {property(ReturnValue)}{newline}
Call Time: {property(CallTime)}{newline}"
name="Detailed Text Formatter" />
</formatters>
</loggingConfiguration>
上Configuring Formatters MSDN文章提到了這些特殊記號但遺憾的是並沒有解釋如何使用它們非常好。
3
你不會說你正在使用哪個版本的EntLib,但給定你的文章的日期,我會假設EntLib 5.0。
你有興趣在格式字符串的部分是:
Extended Properties: {dictionary({key} - {value}{newline})}
這是如下的配置文件中的總「默認」格式化模板的一部分:
<formatters>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" template="Timestamp: {timestamp}{newline}
Message: {message}{newline}
Category: {category}{newline}
Priority: {priority}{newline}
EventId: {eventid}{newline}
Severity: {severity}{newline}
Title:{title}{newline}
Machine: {localMachine}{newline}
App Domain: {localAppDomain}{newline}
ProcessId: {localProcessId}{newline}
Process Name: {localProcessName}{newline}
Thread Name: {threadName}{newline}
Win32 ThreadId:{win32ThreadId}{newline}
Extended Properties: {dictionary({key} - {value}{newline})}" name="Text Formatter" />
</formatters>
因此,您可以看到擴展屬性是一個字典,在創建日誌條目時將由記錄器自動迭代。它的目的是提供一種快速和骯髒的方式來轉儲您的應用可能提供的額外輸出。更完整的方法是編寫一個自定義的格式化程序,該格式程序專門爲您將添加到擴展屬性中的每個對象創建標記。
要獲得性進入這個集合進行的條目時只使用
LogWriter.Write(..)
方法的適當的過載。其中一些有
IDictionary(key, string) properties
您可以用來提供這些值的參數。
至於行號和方法名,這些只能插入到上面提供的字典中。要獲得它們的值,您可以:
private void FillExtraLogInfo(IDictionary<string, object> info)
{
StackFrame stackFrame = new StackFrame(1, true);
info.Add("Method Name", stackFrame.GetMethod().ToString());
info.Add("Line Number" stackFrame.GetFileLineNumber());
}
相關問題
- 1. 企業庫日誌記錄
- 2. 企業庫4.1日誌記錄錯誤?
- 3. 企業庫日誌記錄:TraceListeners問題
- 4. 企業庫日誌記錄 - 多線程日誌到多個日誌文件
- 5. 企業庫5日誌記錄類名稱
- 6. 防止企業庫日誌記錄將日誌值添加到日誌中
- 7. 企業庫日誌記錄寫日誌參數
- 8. 如何爲IIS6上運行的企業庫日誌記錄塊
- 9. 集中日誌記錄方法和日誌記錄當前行號
- 10. 如何在日誌語句打印日誌中記錄日誌jar文件
- 11. 企業庫5.0使用CustomTraceListener和ConfigurationSourceBuilder進行日誌記錄
- 12. 企業庫日誌記錄 - 顯示文件和行
- 13. 企業庫日誌記錄 - 如何在運行時獲取配置的日誌記錄級別?
- 14. 企業庫日誌記錄 - 如何防止「常規信息:0:」條目?
- 15. Laravel 5.2每日日誌記錄無法寫入/打開日誌
- 16. 企業庫日誌記錄沒有從ASP.NET登錄到事件日誌
- 17. 使用企業庫日誌記錄塊向事件日誌中添加'用戶'
- 18. 如何使用Moq驗證企業庫日誌記錄?
- 19. 不在日誌記錄器的控制檯中打印日誌
- 20. Microsoft企業庫5.0日誌記錄只發生在幾個WCF方法調用
- 21. 使用Microsoft企業庫進行連續日誌記錄LogWriter
- 22. 使用MS企業庫進行日誌記錄
- 23. 通過MSMQ使用企業庫5.0進行日誌記錄
- 24. 企業庫5.0日誌塊在asp.net中?
- 25. Azure網站和企業庫日誌記錄
- 26. MSMQ,WCF和企業庫5日誌記錄應用程序塊
- 27. 如何在EventType中分離企業日誌記錄文件?
- 28. 打印和pexpect日誌記錄
- 29. JBoss日誌記錄(log4j)標題在每行包裝條目上打印
- 30. 使用企業庫日誌記錄應用程序塊的日誌方法參數和返回類型
這是錯誤的,並且不起作用。在'{屬性()}格式化用於'對底層LogEntry對象的印刷物的性能如'ActivityId' –