我保留了几个文本日志文件,希望它们不会变得太大。我搜索并发现很多人问同样的事情,我发现了几个看起来效率有问题的解决方案,所以我尝试滚动我自己的功能。我之前在 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);
}
最佳答案
除了建议您使用适当的日志记录框架(如 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。
关于c# - 将日志文件保持在一定大小以下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7350121/