質問

トレース情報を出力するライブラリ アセンブリと、app.config を介してトレース リスナーを追加するクライアント winforms アプリケーションがあります。System.Diagnostics トレース用に構成されていない ASP.NET でライブラリを使用する場合、どうすればトレース出力を「キャッチ」できますか?

おまけの質問:何かやってもいいですか? エルマ この情報を取得して記録するには?現在、ASP.NET アプリはエラー ログに Elmah を使用していますが、その点について私が知っているのはこれだけです。

役に立ちましたか?

解決

プログラムでトレースファイルのリスナーを取り付けるためのコードを記述し、web.configファイルにトレースを有効に - あなたは、

そのあとに行われます

他のヒント

ライブラリがトレース情報を出力する限り、この情報は任意の専用ツール ( デバッグビュー)、または 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)
        {
        }
    }
}

そして、GOコード(あなたはあなたのweb.configファイルを使用することができます)。

Tracer.Register();

でhttpブログ://truenorthit.co.uk/2015/04/17/trace-listener-for-elmah-asp-mvc-exception-logger/する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top