سؤال

لدي مجموعة مكتبة تنتج معلومات التتبع، وتطبيق WinForms العميل الذي يضيف مستمع تتبع عبر App.config. إذا كنت لاستخدام المكتبة في ASP.NET، لم يتم تكوينها ل Timal.Diagnostics تتبع، كيف يمكنني "قبض" إخراج التتبع؟

سؤال المكافأة: هل يمكنني أن أفعل شيئا مع محمة للقبض على هذه المعلومات وتسجيل هذه المعلومات؟ يستخدم تطبيق ASP.NET الخاص بنا حاليا Elmah عن تسجيل الأخطاء، ولكن هذا كل ما أعرفه على هذا الجانب من الأشياء.

هل كانت مفيدة؟

المحلول

اكتب التعليمات البرمجية لإرفاق المستمع في ملفات التتبع بالبرنامجي وتمكين التتبع في Web.config - سوف يتم ذلك بعد ذلك

نصائح أخرى

أعتقد أنه طالما أن المكتبة تنتج معلومات التتبع، يمكن التقاط هذه المعلومات بأي أداة متخصصة (مثل Debugview.) أو حتى أداة نمت المنزل، بغض النظر عن تكوين 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)
        {
        }
    }
}

و، رمز التنقل (يمكنك استخدام Web.config الخاص بك)

Tracer.Register();

بلوق في http://truenorthit.co.ukoy/0/2012/04/17/Trace-listener-For-Elmah-Sp-MVC-Exception-logger/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top