0

わかりましたので、ASP.net と C# で実行されている Web サイトのエラー ログ ファイルを取得しようとしています。

通常のパスでドライブに保存してみました。C# コード (コード ビハインド ページ) であるため、サーバーを取得してそこに保存することを期待しています。(最終的にはサーバー上で実行されるコードです)

残念ながら、それは真実ではありません。クライアントがサイトを開くローカルマシンに保存されます。

サーバーマシンに強制的に保存するにはどうすればよいですか?

すべてのエラー ログを 1 か所にまとめたい。読書またはこれを行う方法に関する提案。

   string path = "C:\\WebSite";
   string error = "error";          
   try
    {
      // check if dir exists if it does i add file name to the path
      // i removed code to keep it simple
      path += "\\logs.txt";

      FileStream log_fs = 
              new FileStream(path, FileMode.Append, FileAccess.Write);
      StreamWriter log_sw = 
              new StreamWriter(log_fs);
      string log = String.Empty;

      // formate log string using error message

      log_sw.Write(log);
      log_sw.Close();
      log_fs.Close();
   }
   catch (Exception ex)
   {
        // here I e-mail the error in case logging failed
   }

このコードは、サーバーではなくローカル マシンにファイルを生成します。

4

2 に答える 2

0

次のようなコードを使用して、Web サーバー上の任意の場所 (ASPNET ユーザー アカウントに書き込み権限がある場所) にログインできます。

string log = String.Empty;

// format log string using error message

try
{
    using (StreamWriter logFile = new StreamWriter(@"C:\WebSite\logs.txt", true))
    {
        logFile.WriteLine(log);
    }
}
catch
{
    // here I e-mail the error in case logging failed
}

これにより、Web サイトをホストしている Web サーバーにファイルが書き込まれます。ここで、開発中に Web サイトをローカルで実行していて、組み込みの VS Web サーバーまたは IIS を使用している場合、もちろん、Web サイトをローカルでテストするときにファイルがマシン上に作成されます。

于 2009-07-09T16:32:16.303 に答える
0

質問の提案部分に答えるために、ELMAHの使用を検討しましたか? エラーは別のストレージに記録されます:

Microsoft SQL Server Oracle (OracleErrorLog) SQLite (バージョン 3) データベース ファイル Microsoft Access (AccessErrorLog) VistaDB (VistaDBErrorLog) Loose XML ファイル RAM (メモリ内)

または、メール、ツイッターで送信

elmah はセットアップが非常に簡単で、非常に効果的です

于 2009-07-09T19:55:42.230 に答える