首页 新闻 会员 周边

TraceSource 如何设置每天一个日志文件?

0
悬赏园豆:5 [待解决问题]

<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 那样子设置的属性?

dotnetgeek的主页 dotnetgeek | 菜鸟二级 | 园豆:482
提问于:2013-07-10 17:23
< >
分享
所有回答(1)
0

需要自己实现一个RollOverTextWriter,参考:Rolling over TextWriterTraceListner logs

dudu | 园豆:30994 (高人七级) | 2013-07-10 17:30

又是dudu你啊。

已经写了一个RollOverTextWriter继承System.Diagnostics.TraceListener了

那配置文件里,存放路径及文件名怎么写?

initializeData="C:/error.txt" 无论写路径,还是只写文件名都不行。

支持(0) 反对(0) dotnetgeek | 园豆:482 (菜鸟二级) | 2013-07-10 17:45

@dotnetgeek: 

是不是配置文件的属性,已经给原来的不一样了??

支持(0) 反对(0) dotnetgeek | 园豆:482 (菜鸟二级) | 2013-07-10 17:47

现在用编程的方式,效果是,只生成一个空的带有日期格式的文件,但是写入不了内容。如果是配置文件的方式,不知道怎么配。

支持(0) 反对(0) dotnetgeek | 园豆:482 (菜鸟二级) | 2013-07-11 10:28

@dotnetgeek: 这个你自己想办法解决吧,我只能提供思路

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2013-07-11 11:07

@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");

支持(0) 反对(0) dotnetgeek | 园豆:482 (菜鸟二级) | 2013-07-12 09:38

@dotnetgeek: 期待你将解决方法通过博客分享出来

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2013-07-12 17:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册