문제
추적 정보를 출력하는 라이브러리 어셈블리와 Client Winforms 응용 프로그램이 App.Config를 통해 추적 리스너를 추가하는 응용 프로그램을 가지고 있습니다. System.Diagnostics 추적을 위해 구성되지 않은 ASP.NET에서 라이브러리를 사용하려면 추적 출력을 어떻게 '잡을 수 있습니까?
보너스 질문 : 내가 뭔가를 할 수 있습니까? 엘마 이 정보를 잡고 로그인하려면? ASP.NET 앱은 현재 오류 로깅에 Elmah를 사용하지만 이것이 제가 그 측면에서 아는 전부입니다.
해결책
추적 파일 리스너를 프로그래밍 방식으로 첨부하고 web.config에서 추적을 활성화하기위한 코드 작성 - 그 후에 완료됩니다.
다른 팁
라이브러리가 정보를 추적하는 한이 정보는 전문화 된 도구로 캡처 할 수 있다고 생각합니다. 디버그 뷰) 또는 ASP.NET 구성에 관계없이 주택 성장 도구.
나는 이것이 오래되고 대답하는 것을 보았지만 .. 나는 단지 같은 문제를 겪었고 나는
tracelistener의 예외 클래스
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/
제휴하지 않습니다 StackOverflow