簡體   English   中英

從.NET Framework內部記錄(Logging.On)

[英]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)。

如果您對所有這些值(0x10 | 0x8 | 0x4 | 0x2 | 0x1)進行或運算,則會得到0x1F,即十進制的“ 31”,如上所示。

此處可以找到有關使用應用程序配置文件進行設置的詳細信息。 只需為您將要使用的源創建與上面類似的app.config或web.config文件即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM