在我的应用程序(C#Winforms)中我试图实现像This one here这样的自定义跟踪侦听器。
但我收到配置错误。
配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="TextListener"
type="MyApp.TextLogTraceListener, MyApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
initializeData="c:\\trace.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
自定义侦听器
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace MyApp
{
public class TextLogTraceListener : System.Diagnostics.TextWriterTraceListener
{
public TextLogTraceListener()
{
}
public TextLogTraceListener(string name)
: base(name)
{
}
public override void Write(string message)
{
using (FileStream fs = new FileStream("C:\\trace.log", FileMode.Append))
{
StreamWriter sw = new StreamWriter(fs);
sw.Write(message);
}
}
public override void WriteLine(string message)
{
using (FileStream fs = new FileStream("C:\\trace.log", FileMode.Append))
{
StreamWriter sw = new StreamWriter(fs);
sw.Write(message);
}
}
}
}
错误我
An unhandled exception of type 'System.Configuration.ConfigurationErrorsException' occurred in System.dll
Additional information: Couldn't find type for class MyApp.TraceListeners.TextLogTraceListener, MyApp.TraceListeners, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
我的主要目标是将所有调试/跟踪信息捕获到我自己的自定义文本文件中。
更新 我修复了似乎删除错误的命名空间,正如Martin建议我更改了initizeData。现在我已经删除了VS中抛出的错误,我仍然没有将数据报告给文本文件。
我正在写这样的跟踪日志。
Trace.WriteLine("Application Starting");
配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="TextListener"
type="MyApp.TextLogTraceListener, MyApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
initializeData="c:\trace.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>