我想在我的代码中进行如下调用:
System.Diagnostics.Trace.WriteLine("Starting XYZ...");
并将其写入文件,如config:
中所述 <system.diagnostics>
<trace autoflush="true">
<listeners>
<add type="System.Diagnostics.TextWriterTraceListener" name="TextWriter"
initializeData="trace.log" />
</listeners>
</trace>
</system.diagnostics>
除了现有的WriteLine()
调用与我添加的新代码行混淆之外,这种方法效果很好。
如何将我的跟踪写入一个日志文件并保留现有文件(在我修改它之前目前根本没有配置,我希望现有的跟踪按目前的状态处理)。
我知道这可以通过代码实现,但我想在配置文件中指定文件并有条件地写入它。
答案 0 :(得分:1)
了解你的问题是什么。编辑了我的评论。您可以使用以下跟踪源:http://olondono.blogspot.com/2008/01/about-trace-listeners.html
基本上你可以修改你的配置文件:
<system.diagnostics>
<trace autoflush="true"/>
<sources>
<source name="myTraceSource"
switchName="mySwitch"
switchType="System.Diagnostics.SourceSwitch" >
<listeners>
<clear/>
<add name="textwriterListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\myLog.txt" />
</listeners>
</source>
</sources>
<switches>
<add name="mySwitch" value="Warning" />
</switches>
</system.diagnostics>
然后在您的代码中,您可以执行以下操作:
// First step: create the trace source object
TraceSource ts = new TraceSource("myTraceSource");
// Writing out some events
ts.TraceEvent(TraceEventType.Warning, 0, "warning message");
ts.TraceEvent(TraceEventType.Error, 0, "error message");
ts.TraceEvent(TraceEventType.Information, 0, "information message");
ts.TraceEvent(TraceEventType.Critical, 0, "critical message");
答案 1 :(得分:1)
您想使用TraceSource
这允许您的应用写入traceForStartUp,traceForPerfomance,joesTrace,legacyTraceThatIDontWantToCommentout,然后根据您感兴趣的跟踪类型打开或关闭它们。
http://msdn.microsoft.com/en-us/library/ms228993%28v=vs.110%29.aspx
您可以进一步过滤跟踪源,(即从9-5发送跟踪到日志,但有几个小时后有不同的跟踪监听器向电子邮件监听器发送跟踪)但我不认为这就是你正在寻找,它恰好是这个命名空间中一个类的名称。