Прослушиватели трассировки в ASP.NET
Вопрос
У меня есть сборка библиотеки, которая выводит информацию трассировки, и клиентское приложение winforms, которое добавляет прослушиватель трассировки через app.config.Если бы я использовал библиотеку в ASP.NET, не настроенную для трассировки System.Diagnostics, как бы я мог «перехватить» выходные данные трассировки?
Бонусный вопрос:Могу ли я что-нибудь сделать с Эльмах поймать и зарегистрировать эту информацию?Наше приложение ASP.NET в настоящее время использует Elmah для регистрации ошибок, но это все, что я знаю об этом.
Решение
напишите код для программного подключения прослушивателя файла трассировки и включите трассировку в web.config - после этого все будет готово
Другие советы
Я думаю, что пока библиотека выводит информацию трассировки, эту информацию можно получить с помощью любого специализированного инструмента (например, Дебагвиев) или даже собственный инструмент, независимо от конфигурации ASP.NET.
Я вижу, что это старо и ответило, но..У меня только что возникла такая же проблема, и я придумал
Класс исключений для прослушивателя трассировки
namespace TrueNorth.Elmah.TraceListener
{
internal class TraceInformation : Exception
{
internal TraceInformation(string message) : base(message){}
}
internal class TraceError: Exception
{
internal TraceError(string message) : base(message) { }
}
internal class TraceWarning : Exception
{
internal TraceWarning(string message) : base(message) { }
}
internal class TraceWrite : Exception
{
internal TraceWrite(string message) : base(message) { }
}
}
Слушатель
namespace TrueNorth.Elmah.TraceListener
{
internal class ElmahListener : System.Diagnostics.TraceListener
{
public override void TraceEvent(TraceEventCache eventCache, string source, TraceEventType eventType, int id, string format, params object[] args)
{
TraceEvent(eventCache, source, eventType, id, string.Format(format, args));
}
public override void TraceEvent(TraceEventCache eventCache, string source, TraceEventType eventType, int id, string message) //
{
Exception exception;
switch (eventType)
{
case TraceEventType.Information:
exception = new TraceInformation(message);
break;
case TraceEventType.Error:
exception = new TraceError(message);
break;
case TraceEventType.Warning:
exception = new TraceWarning(message);
break;
default:
exception = new TraceWrite(message);
break;
}
if (HttpContext.Current.Session == null)
{
ErrorLog.GetDefault(null).Log(new Error(exception));
}
else
{
ErrorSignal.FromCurrentContext().Raise(exception );
}
}
public override void TraceTransfer(TraceEventCache eventCache, string source, int id, string message, Guid relatedActivityId)
{
base.TraceTransfer(eventCache, source, id, message, relatedActivityId);
}
public override void Write(string message)
{
}
public override void WriteLine(string message)
{
}
}
}
И код GO (вы можете использовать свой web.config)
Tracer.Register();
написал в блоге на http://truenorthit.co.uk/2015/04/17/trace-listener-for-elmah-asp-mvc-Exception-logger/