<system.diagnostics>
<sources>
<source name="TraceError" switchValue="Error,Information">
<listeners>
<add initializeData="C:/error.txt" type="System.Diagnostics.TextWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="txtListener" traceOutputOptions="DateTime,ProcessId,ThreadId" >
<filter type="System.Diagnostics.EventTypeFilter" initializeData="Error,Information" />
</add>
</listeners>
</source>
</sources>
<trace autoflush="true">
</trace>
</system.diagnostics>
目前配置文件是这样写的。前台调用Error调试信息的时候,将存在C:/error.txt文件里,但是,我想做成每天一个记录文件。有没有像Log4net 那样子设置的属性?
需要自己实现一个RollOverTextWriter,参考:Rolling over TextWriterTraceListner logs
又是dudu你啊。
已经写了一个RollOverTextWriter继承System.Diagnostics.TraceListener了
那配置文件里,存放路径及文件名怎么写?
initializeData="C:/error.txt" 无论写路径,还是只写文件名都不行。
@dotnetgeek:
是不是配置文件的属性,已经给原来的不一样了??
现在用编程的方式,效果是,只生成一个空的带有日期格式的文件,但是写入不了内容。如果是配置文件的方式,不知道怎么配。
@dotnetgeek: 这个你自己想办法解决吧,我只能提供思路
@dudu:
我自己想了一个非配置文件的方法解决了。我看到TextWriterTraceListener有一个重载方法,需要一个文件路径,于是就在这里做手脚了,其实我觉得更好的方法应该是在配置文件里头设置。
TraceSource ts1 = new TraceSource("TraceError");
string fileName = DateTime.Now.Second.ToString(); //這裡使用秒數生成文件
TextWriterTraceListener tr1 = new TextWriterTraceListener(string.Format(@"C:\{0}.txt",fileName),"d");
ts1.Listeners.Add(tr1);
ts1.TraceEvent(TraceEventType.Error, 1, "Error");
@dotnetgeek: 期待你将解决方法通过博客分享出来