Question

J'ai un ensemble de bibliothèque qui transmet des informations de suivi, et une application WinForms client qui ajoute un écouteur de la trace via app.config. Si je devais utiliser la bibliothèque dans ASP.NET, non configuré pour le traçage des System.Diagnostics, comment la sortie de trace pourrais-je « attraper »?

Question bonus: Puis-je faire quelque chose avec Elmah pour attraper et connecter cette info? Notre application ASP.NET utilise actuellement Elmah pour la journalisation des erreurs, mais qui est tout ce que je sais de ce côté des choses.

Était-ce utile?

La solution

code d'écriture pour attacher un écouteur de fichier de trace et programmation activer le suivi dans web.config - vous sera fait après que

Autres conseils

Je pense que, tant que les sorties de la bibliothèque trace l'information, cette information pourrait être capturé avec un outil spécialisé (comme DebugView ) ou même un outil développé de la maison, quelle que soit la configuration ASP.NET.

Je vois c'est vieux et a répondu, mais .. Je viens d'avoir la même question et je suis venu avec

classe Exception pour 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) { }
    }
}

L'auditeur

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

Et, le code GO (vous pouvez utiliser votre web.config)

Tracer.Register();

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top