自定义跟踪侦听器出错

时间:2014-04-25 00:21:43

标签: c# .net winforms logging trace

在我的应用程序(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>

0 个答案:

没有答案