【发布时间】:2015-02-16 12:55:32
【问题描述】:
我看到了有关此主题的两个答案,但我无法弄清楚。我有一个自定义 TextWriterTraceListener,我希望它在我的跟踪源中使用。
namespace MyTraceLogger
{
public class MyTextTraceListener : TextWriterTraceListener
{
public override void Write(string message)
{
this.Write(string.Format("{0},{1}",
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
message));
}
public override void WriteLine(string message)
{
this.WriteLine(string.Format("{0},{1}",
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
message));
}
}
}
<system.diagnostics>
<sources>
<source name="SpendingTrace" switchName="SpendingSourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
<listeners>
<add name="Spending" type="MyTraceLogger.MyTraceLogger.MyTextTraceListener,MyTraceLogger.MyTraceLogger" initializeData="Spending.log" />
<remove name ="Default" />
</listeners>
</source>
</sources>
<switches>
<!-- You can set the level at which tracing is to occur -->
<add name="SpendingSourceSwitch" value="Warning" />
<!-- You can turn tracing off -->
<!--add name="SourceSwitch" value="Off" -->
</switches>
<trace autoflush="true" indentsize="4"></trace>
这是我得到的错误:找不到类 MyTraceLogger.MyTraceLogger.MyTextTraceListener,MyTraceLogger.MyTraceLogger 的类型。
当我右键单击 MyTraceLogger 的项目以获取属性时,它显示程序集是 MyTraceLogger,我的命名空间也是 MyTraceLogger。
【问题讨论】:
-
找出为什么令人困惑的 MyTraceLogger.MyTraceLogger ,我将它嵌套在 MyTraceLogger 类中。我将其拔出并将配置设置为 MyTraceLogger.MyTextTraceListener、MyTraceLogger、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null 现在出现错误无法创建 MyTraceLogger.MyTextTraceListener、MyTraceLogger、Version=1.0.0.0、Culture=中性,PublicKeyToken=null 另一个帖子说重载了一个构造函数。我不知道要重载哪一个,所以我试试这个: public MyTextTraceListener() : base() { } 它仍然说无法创建。
-
我尝试公开 MyTextTraceListener(string name) : base(name) { } 并对其进行调试,我看到它传入的字符串是我的日志名称,但似乎这个构造函数被称为2 或 3 次,然后我得到 stackoverflow 错误。
-
我偶然发现了这篇文章。 nicholas.piasecki.name/blog/2009/03/…
标签: c# asp.net system.diagnostics