将日志文件保持在一定大小

时间:2011-09-08 14:58:04

标签: c#

我保留了几个我希望防止变得过大的文本日志文件。我搜索并发现很多人都在问同样的事情,我发现了一些效率似乎有问题的解决方案,所以我尝试了自己的功能。我之前在VB6中做了同样的事情,并最终在我的所有应用程序中使用该功能,所以我知道我将在我的C#程序中经常使用它。这可能应该是CW,但由于标记了CW被禁用的问题,我在这里发布。我的问题是,因为我将使用它很多是有效的,如果不是,我应该改变什么来改进它?目前我将日志文件限制为1MB,这些是我保存的最大日志,因此我预计它们不会变得更大(如果有的话)。

private static void ShrinkFile(string file)
{
    StreamReader sr = new StreamReader(file);
    for (int i = 0; i < 9; i++) // throw away the first 10 lines
    {
        sr.ReadLine();
    }
    string remainingContents = sr.ReadToEnd();
    sr.Close();
    File.WriteAllText(file, remainingContents);
}

1 个答案:

答案 0 :(得分:4)

除了建议您使用Log4Net或NLog(或任何其他)之类的正确日志框架之外,为了改善您的代码,您至少可以确保始终使用以下内容关闭流:

private static void ShrinkFile(string file)
{
  using(var sr = new StreamReader(file))
  {
    for (int i = 0; i < 9; i++) // throw away the first 10 lines
    {
        sr.ReadLine();
    }

    // false here means to overwrite existing file.
    using (StreamWriter sw = new StreamWriter(file, false))
    {
      sw.Write(sr.ReadToEnd());
    }
  }
}

我也避免将ReadToEnd写入字符串,因为你可以直接写入StreamWriter。