[英]Logging from .NET framework internals (Logging.On)
我正在調試一些意外行為,並在跟蹤.NET框架時看到了很多類似這樣的東西:
if (Logging.On) {
Logging.PrintInfo(Logging.Web, this, SR.GetString(SR.net_log_n_certs_after_filtering, filteredCerts.Count));
…
}
但是(默認情況下是預期的)執行將直接執行這些步驟。 有什么方法可以打開日志記錄嗎? 還是僅僅是框架開發人員在進行框架的特殊構建時可以做的事情?
四周反射表明Logging.On已通過
s_WebTraceSource = new NclTraceSource("System.Net");
s_HttpListenerTraceSource = new NclTraceSource("System.Net.HttpListener");
s_SocketsTraceSource = new NclTraceSource("System.Net.Sockets");
s_CacheTraceSource = new NclTraceSource("System.Net.Cache");
try
{
flag = ((s_WebTraceSource.Switch.ShouldTrace(TraceEventType.Critical) || s_HttpListenerTraceSource.Switch.ShouldTrace(TraceEventType.Critical)) || s_SocketsTraceSource.Switch.ShouldTrace(TraceEventType.Critical)) || s_CacheTraceSource.Switch.ShouldTrace(TraceEventType.Critical);
}
這意味着它正在使用標准跟蹤,並只是檢查是否至少正在監視“關鍵”級別。 可以在此MSDN文章的“調試套接字應用程序”部分中找到如何使用它的示例,如下所示:
<configuration>
<system.diagnostics>
<sources>
<source name="System.Net.Sockets">
<listeners>
<add name="Sockets"/>
</listeners>
</source>
</sources>
<switches>
<add name="System.Net.Sockets" value="31" />
</switches>
<sharedListeners>
<add name="Sockets" type="System.Diagnostics.TextWriterTraceListener"
initializeData="Sockets.log"/>
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
</configuration>
如文章所述,開關值是以下五個值的按位或:
如果您對所有這些值(0x10 | 0x8 | 0x4 | 0x2 | 0x1)進行或運算,則會得到0x1F,即十進制的“ 31”,如上所示。
在此處可以找到有關使用應用程序配置文件進行設置的詳細信息。 只需為您將要使用的源創建與上面類似的app.config或web.config文件即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.