2

テキストファイルからテキストデータを取得したい ::

そのために、::のようなコードを使用しました

 public ActionResult Log()
 {
    StreamReader reader = new StreamReader(Server.MapPath("~/Views/Builder/TestLogger.txt"));
    return View(reader);
}

「Log4Net」からこのテキストファイルを作成しました。MVCアプリケーションの「ビュー」または「アクション」でこのテキストファイルの内容を取得するにはどうすればよいかを知りたいです。

4

3 に答える 3

10

次のコードを使用できます。

public ActionResult Log()
{
    var fileContents = System.IO.File.ReadAllText(Server.MapPath("~/Views/Builder/TestLogger.txt"));
    return Content(fileContents);
}
于 2013-08-21T11:05:11.513 に答える
1

を使用できますContentResult。これは、コントローラー アクションからテキスト コンテンツを返すために使用されます。

[HttpGet]
public ActionResult Log() {         
     try {
        string content = string.Empty;
        using (var stream = new StreamReader(Server.MapPath("~/Views/Builder/TestLogger.txt"))) {
          content = stream.ReadToEnd();
        }
        return Content(content);
     }
     catch (Exception ex) {
       return Content("Something ");
     }
} 
于 2013-08-21T11:04:40.773 に答える
1

他の回答へのコメントに基づいて、使用しようとしているログ ファイルは現在サーバーによってロックされているようです。ログに記録されるリクエストを開始したため、ログ ファイルを開いて書き込みを行っている可能性があり、それを読み取れないようになっています。

を使用していると仮定すると、ロガーがインスタンス化されるときFileAppenderに設定appender.LockingModel = FileAppender.MinimalLockすると、実行中にロックを維持する log4net プロセスとは対照的に、何もログに記録されていないときにファイルにアクセスできるようになります。

すべてのプロパティが実行前に設定されている場合、これは構成で設定することもできます。

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

この問題はあなたが初めてではありません: http://hoenes.blogspot.com/2006/08/displaying-log4net-log-file-on-aspnet.html

于 2013-08-21T20:22:14.950 に答える