2009-06-12 6 views
2

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

ボーナスに関する質問:この情報をキャッチしてログに記録するには、Elmahで何かできますか?私たちのASP.NETアプリは現在、エラーログにElmahを使用していますが、それは私が物事のその面で知っているすべてです。

答えて

0

programticallyトレースファイルのリスナーを取り付けるための書き込みコードとweb.configファイルにトレースを有効に - あなたはその

1

ライブラリがトレース情報を出力する限り、この情報は、ASP.NET構成に関係なく、特定のツール(DebugViewなど)または家庭用ツールでキャプチャできます。

+0

でブログ。 – ProfK

1

後に行われます、私はこれが古いと答えた参照、しかし..私はちょうど同じ問題を持っていたし、私は、リスナー

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

ため

Exceptionクラスを思い付い

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

Tracer.Register(); 

は、私は専用ツールなしでそれをキャプチャしたいんだhttp://truenorthit.co.uk/2015/04/17/trace-listener-for-elmah-asp-mvc-exception-logger/

関連する問題