【问题标题】:How to empty contents of a log file being used by the same program如何清空同一程序正在使用的日志文件的内容
【发布时间】:2014-11-15 09:28:04
【问题描述】:

我有一个 C# 应用程序,它使用 log4net 将一些日志输出写入位于应用程序目录中的文件名“logfile.txt”中。我想在文件大小达到 10GB 时立即清空文件的内容。

为此,我使用了一个计时器,它不断检查文件的大小是否超过 10GB。 但我无法对“logfile.txt”执行任何操作,因为它正被其他线程用于写入日志输出并且它正在抛出我,

System.IO.IOException "该进程无法访问文件 'C:\Program Files\MyApps\TestApp1\logfile.txt',因为它正被另一个进程使用。"

这是检查文件“logfile.txt”大小的计时器代码

private void timer_file_size_check_Tick(object sender, EventArgs e)
{
    try
    {
        string log_file_path = "C:\\Program Files\\MyApps\\TestApp1\\logfile.txt";
        FileInfo f = new FileInfo(log_file_path);
        bool ex;
        long s1;
        if (ex = f.Exists)
        {
            s1 = f.Length;
            if (s1 > 10737418240)
            {
                System.GC.Collect();
                System.GC.WaitForPendingFinalizers();

                File.Delete(log_file_path);
                //File.Create(log_file_path).Close();
                //File.Delete(log_file_path);
                //var fs = new FileStream(log_file_path, FileMode.Truncate);
            }
        }
        else
        {
            MDIParent.log.Error("Log file doesn't exists..");
        }
    }
   catch (Exception er)
    {
        MDIParent.log.Error("Exceptipon :: " + er.ToString());
    } 
}

【问题讨论】:

  • 你把 try/catch 搞混了。在 try 语句下进行捕捉
  • 为什么不重新配置应用程序以保持不超过 10 GB 的日志文件大小?您可以使用RollingFileAppendermaximumFileSize 选项来执行此操作。 log4net 的全部意义在于它为您提供了独立于应用程序逻辑配置日志记录的灵活性。
  • MDIParent.log 是 ILog 类型的成员,它将相应的日志写入文件“logfile.txt”。我想要做的是在大小达到 10GB 时清空这个文件的内容。
  • @Jeroen Mostert 你能指导我完成你给出的解决方案吗?
  • 我是否需要从我已经进行其他日志配置的 app.config 更改日志配置?

标签: c# file file-io log4net ilog


【解决方案1】:

您不应该自己删除日志文件,因为 log4net 可以为您完成。如果您使用RollingFileAppender,您可以指定最大文件大小(maximumFileSize 属性)。此外,如果您将maxSizeRollBackups 属性设置为0,则日志文件将在达到限制时被截断。请以question 为例。

【讨论】:

    猜你喜欢
    • 2014-07-16
    • 2019-11-18
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    相关资源
    最近更新 更多