문제

추적 정보를 출력하는 라이브러리 어셈블리와 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/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top