Pergunta

Eu tenho uma biblioteca de montagem que informações de rastreamento saídas, e um cliente winforms aplicativo que adiciona um ouvinte de rastreamento via app. Se eu fosse para usar a biblioteca em ASP.NET, não configurado para System.Diagnostics rastreamento, como eu poderia 'pegar' a saída de rastreio?

Bônus pergunta: Posso fazer algo com Elmah para captura e log esta informação? App Nosso ASP.NET usa atualmente Elmah para registro de erros, mas isso é tudo que eu sei sobre esse lado das coisas.

Foi útil?

Solução

escrever código para anexar um ouvinte arquivo de rastreamento programaticamente e ativar o rastreamento em web.config - você vai ser feito depois que

Outras dicas

Eu acho que, desde que as informações de rastreio da biblioteca saídas, esta informação pode ser capturada com qualquer ferramenta especializada (como DebugView ) ou até mesmo uma ferramenta de casa adulto, independentemente da configuração do ASP.NET.

Eu vejo isso é velho e respondeu, mas .. Eu apenas tive o mesmo problema e eu vim com

classe de exceção 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) { }
    }
}

O ouvinte

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

E, o código GO (você pode usar seu web.config)

Tracer.Register();

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top