Unable to connect custom tracelistener class via app config - ConfigurationErrorsException

UPDATE - Нет необходимости отвечать на этот вопрос сейчас, я решил его ниже.

Здравствуйте, я пытаюсь реализовать пользовательский слушатель трассировки в .NET, но у меня проблема с добавлением слушателя трассировки через файл конфигурации.

Я нашел похожее сообщение на stack overflow, но, похоже, оно не помогло (How to define custom TraceListener in app.config).

Сообщение об исключении:

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

Как вы можете видеть в моем коде ниже, я даже использовал AssemblyQualified имя после попытки без него.

Конфиг и dll существуют в приложении, которое обращается к слушателю.

Может ли кто-нибудь определить, что я делаю неправильно?

Код C#:

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>

Простой вызов трассировки в ссылающемся приложении:

Trace.WriteLine( "Test" );
6
задан Community 23 May 2017 в 10:30
поделиться

1 ответ

Не беспокойтесь, я решил проблему сейчас.

Мне нужно было переопределить одну из перегрузок конструктора:

public TextLogTraceListener (имя строки): base (имя) {

}

12
ответ дан 9 December 2019 в 20:38
поделиться