1

Visual Studio で実行すると正常に動作する .net 3.5 Web サイトがあります。ただし、IIS で実行すると、いくつかのエラーが発生します。私がやりたいことは、web.config にある種のログを追加して、Web サイトで何が起こっているかをファイルに記録することです。これを行う良い方法はありますか?ありがとう

4

4 に答える 4

2

コードが組み込みの .NET System.Diagnostics.Trace 関数を使用してログ情報を出力する場合、web.config ファイルを使用して、これらのトレースの送信先を制御および構成できます。

コードでは、次のような呼び出しを使用します

System.Diagnostics.Trace.TraceInformation("Your log info here");

web.config で、次のようにイベント ログ トレース リスナーを設定します。

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener" 
          type="System.Diagnostics.TextWriterTraceListener" 
          initializeData="TextWriterOutput.log" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

これにより、プログラムからのトレース出力がテキスト ファイル TextWriterOutput.log にルーティングされます。

詳細はこちら: http://msdn.microsoft.com/en-us/library/system.diagnostics.tracelistener.aspx

于 2012-06-12T16:02:17.397 に答える
0

NLog のような優れたロギング フレームワークを実際に使用する必要があります (他の場所で提案されているように)。ただし、手早く簡単な処理が必要な場合は、Global.asax Application_Error イベントに簡単なエラー処理を追加することを検討してください。次のようにします (メモリから解放します)。

protected void Application_Error(object sender, EventArgs e)
{
    // Get error and log objects
    var exception = Server.GetLastError();
    var log = new System.IO.StreamWriter("c:\\path\\to\\log.txt");

    // Write out what you need and close the file
    log.WriteLine(exception.Message);
    log.Close();

    // Redirect to error page ..
}

ログ ファイルを開く/作成するために必要なアクセス許可があることも確認してください。

于 2012-06-12T16:11:50.560 に答える
0

「ファイルに発生する」という意味がわかりませんが、ログを追加する私の好みの方法はNLogを使用することです。

NLog はNuGetを介して利用でき、強力でセットアップが非常に簡単です。エラーの種類ごとに異なるログ アクションを設定できます。たとえば、私はほとんどのことをファイルに記録しますが、NLog を使用する多くの Web アプリについて、致命的なエラーが発生した場合は運用チームに電子メールを送信するようにしています。

それがあなたが探しているものでない場合は、解決したい問題についてより明確になるように質問を更新してください。

于 2012-06-12T14:58:37.913 に答える
0

(私の意見では) 最も強力なロギング フレームワークの 1 つはELMAHです。エラーを自動的に記録でき、ログに情報を保存するための独自のトリガーを実装することもできます。

何よりも、コードベースを変更せずに実装できます。web.config または machine.config への変更のみが必要です。

于 2012-06-12T14:58:42.770 に答える