Frage

Ich habe eine Bibliothek Assembly, die Informationen ausgibt verfolgen, und eine Client-WinForms-Anwendung, die eine Spur Zuhörer über app.config hinzufügt. Wenn ich die Bibliothek in ASP.NET verwenden waren, nicht für System.Diagnostics Tracing konfiguriert, wie könnte ich ‚fangen‘ die Trace-Ausgabe?

Frage Bonus: Kann ich etwas tun, mit Elmah zu fangen und diese Informationen anmelden? Unsere ASP.NET App nutzt derzeit Elmah für die Fehlerprotokollierung, aber das ist alles, was ich weiß, auf dieser Seite der Dinge.

War es hilfreich?

Lösung

Code schreiben eine Trace-Datei Zuhörer programmatisch und ermöglichen in web.config zur Befestigung Tracing - werden Sie danach getan werden

Andere Tipps

Ich glaube, dass, solange die Bibliothek gibt Ablaufverfolgungsinformationen, diese Informationen mit jedem Spezialwerkzeug erfaßt werden können (wie Debugview ) oder sogar ein Haus angebaut Werkzeug, unabhängig von ASP.NET-Konfiguration.

Das sehe ich alt und beantwortet, aber .. Ich hatte gerade das gleiche Problem und ich kam mit

Exception-Klasse für 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) { }
    }
}

Der Hörer

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)
        {
        }
    }
}

Und der GO-Code (Sie Ihre web.config verwenden)

Tracer.Register();

gebloggt unter http : //truenorthit.co.uk/2015/04/17/trace-listener-for-elmah-asp-mvc-exception-logger/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top