Pregunta

Tengo un ensamblado de biblioteca que da salida a la información de seguimiento, y una aplicación de cliente de Windows Forms que añade un escucha de seguimiento a través de app.config. Si tuviera que utilizar la biblioteca en ASP.NET, no configurado para System.Diagnostics trazado, ¿cómo podría hacerlo 'captura' la salida de rastreo?

Bono pregunta: ¿Puedo hacer algo con Elmah para capturar y registrar esta información? Nuestra aplicación ASP.NET utiliza actualmente Elmah para el registro de errores, pero eso es todo lo que sé de ese lado de las cosas.

¿Fue útil?

Solución

escribir código para la fijación de un oyente archivo de seguimiento mediante programación y habilitar el seguimiento en web.config - que se llevará a cabo después de que

Otros consejos

Creo que, siempre y cuando las salidas de la biblioteca rastrear información, esta información podría ser capturada con cualquier herramienta especializada (como DebugView ) o incluso una herramienta de la casa crecido, independientemente de la configuración de ASP.NET.

Veo esto es viejo y contestado, pero .. sólo he tenido el mismo problema y se me ocurrió

clase de excepciones para 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) { }
    }
}

El oyente

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

Y, el código de IR (puede utilizar su web.config)

Tracer.Register();

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top