Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to connect custom tracelistener class via app config - ConfigurationErrorsException

Tags:

c#

.net

UPDATE - No need to answer this now, I have solved below.

Hi, I'm trying to implement a custom trace listener in .NET, but having a problem adding the trace listener via the config file.

I found a similar post on stack overflow but it doesn't seem to help (How to define custom TraceListener in app.config).

The exception message is:

ConfigurationErrorsException - "Could not create ApplicationFramework.TraceListeners.TextLogTraceListener, ApplicationFramework.TraceListeners, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null."

As you can see in my code below, I have even used the AssemblyQualified name after trying without.

The config and dll exist in the application that references the listener.

Can anyone spot what I might be doing wrong here?

C# Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ApplicationFramework.TraceListeners
{
    public class TextLogTraceListener : System.Diagnostics.TextWriterTraceListener
    {
        public override void Write( string message )
        {
            using (FileStream fs = new FileStream( "C:\\Test\\trace.log", FileMode.Append ))
            {
                StreamWriter sw = new StreamWriter( fs );

                sw.Write( message );
            }
        }

        public override void WriteLine( string message )
        {
            using (FileStream fs = new FileStream( "C:\\Test\\trace.log", FileMode.Append ))
            {
                StreamWriter sw = new StreamWriter( fs );

                sw.Write( message );
            }
        }
    }
}

Config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <system.diagnostics>

      <trace autoflush="true" indentsize="4">
        <listeners>
          <add name="TextListener"
              type="ApplicationFramework.TraceListeners.TextLogTraceListener, ApplicationFramework.TraceListeners, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
              initializeData="trace.log" />
          <remove name="Default" />
        </listeners>
      </trace>

  </system.diagnostics>

</configuration>

Simple trace call in referencing application:

Trace.WriteLine( "Test" );
like image 563
gb2d Avatar asked Aug 22 '10 10:08

gb2d


1 Answers

No worries, I've solved the issue now.

I needed to override one of the constructor overloads:

public TextLogTraceListener( string name ) : base( name ) {

}

like image 188
gb2d Avatar answered Nov 11 '22 05:11

gb2d