开发者

Enable all .NET traces at a specific severity level

I am learning how to use the .NET Tracing framework, and I am stuck trying to enable some fairly simple logging.

I'd like to log all messages that are at "Warning" or above to a text file, using the MyApplication.exe.config file. I would like to enable this for all sources in the application, without having to specify them all in the config file.

In my application code I am calling System.Diagnostics.PresentationTraceSources.Refresh(); and in my .config I have tried the following:

<configuration>
<system.diagnostics>
    <trace autoflush="true" indentsize="4">
        <listeners>
            <add
                name="myListener"
                type="System.Diagnostics.TextWriterTraceListener"
                initializeData="Trace.t开发者_如何学Pythonxt" />
        </listeners>
    </trace>
</system.diagnostics>
</configuration>

But this does not seem to log anything.

My only success has come from explicitly listing all the sources in the .config file; which I want to avoid as I want to catch all sources (even those I don't control).


The .NET tracing framework does not support this. It was designed from the perspective that you should only be logging to diagnose a particular problem, so you would (presumably) know which trace sources would be applicable.

If you need to capture all logging, I'd use moles to hook TraceSource construction or poll TraceSource.tracesources (using Reflection). Moles is preferable because it's cleaner, supported, and you won't lose any messages. Note that both of these approaches are not acceptable for production code; they can be used during development only.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜