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" );
Не беспокойтесь, я решил проблему сейчас.
Мне нужно было переопределить одну из перегрузок конструктора:
public TextLogTraceListener (имя строки): base (имя) {
}