2010年12月17日

WCF debug log

這幾天在弄 IIS/WCF/C# 的 application
感覺 C# 實在是有夠傻瓜導向,之前真是太小看它了,完整度超出我的想像...
可是我覺得微軟的文件有夠難看...

any way, 紀錄一下怎麼寫 debug log

主要 reference 是這篇:

大概是有 Debug 跟 Trace 這兩個系列的 class 可以用,
兩邊指令都差不多,差別在預設 Debug 系列的東西 release build 會被拔掉
另外在 Web.config 裡面要加註冊一個 System.Diagnostics.TextWriterTraceListener 的 listener
Debug/Trace 丟出來的東西才有人負責收

<?xml version="1.0"?>
<configuration>
  
  ...

  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="debugListener"
                 type="System.Diagnostics.TextWriterTraceListener"
                 initializeData="c:/temp/idsafe_service_debug.txt" />
      </listeners>
    </trace>
  </system.diagnostics>

</configuration>

設好以後就來測試一下吧

Trace.Write("Trace.Write\n", "Trace.Write.Category"); // note the \n'
  Trace.WriteLine("Trace.WriteLine", "Trace.WriteLine.Category");
  Trace.TraceInformation("Trace.TraceInformation, {0}", "formated string");
  Trace.TraceWarning("Trace.TraceWarning {0}", "formated string");
  Trace.TraceError("Trace.TraceError, {0}", "this seems can be formated");
  Trace.Fail("short message", "detail message");

上面的 code output 長這樣

Trace.Write.Category: Trace.Write
Trace.WriteLine.Category: Trace.WriteLine
w3wp.exe Information: 0 : Trace.TraceInformation, formated string
w3wp.exe Warning: 0 : Trace.TraceWarning formated string
w3wp.exe Error: 0 : Trace.TraceError, this seems can be formated
Fail: short message detail message

值得注意的是 Trace.Fail 那條除了被 System.Diagnostics.TextWriterTraceListener 收走外,
還會被打到 system event log 去,所以慎用吧

沒有留言:

張貼留言