How to disable creation of empty log file on app start?

前端 未结 7 816
生来不讨喜
生来不讨喜 2020-11-30 07:04

I have configured log4net in my app successfully but one thing is a little bit annoying for me.

The log file is created (empty) after my app start even if no error o

7条回答
  •  长情又很酷
    2020-11-30 07:18

    AcquireLock and ReleaseLock method worked for me, but it bothered me that the file was created/deleted that many times. Here is another similar option that shuts down the logger and deletes the empty logfile when the program completed. Just call RemoveEmptyLogFile when you are done logging.

    /// 
    /// Sets the logging level for log4net.
    /// 
    private static void RemoveEmptyLogFile()
    {
      //Get the logfilename before we shut it down
      log4net.Appender.FileAppender rootAppender = (log4net.Appender.FileAppender)((log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository()).Root.Appenders[0];
      string filename = rootAppender.File;
    
      //Shut down all of the repositories to release lock on logfile
      log4net.Repository.ILoggerRepository[] repositories = log4net.LogManager.GetAllRepositories();
      foreach (log4net.Repository.ILoggerRepository repository in repositories)
      {
        repository.Shutdown();
      }
    
      //Delete log file if it's empty
      var f = new FileInfo(filename);
      if (f.Exists && f.Length <= 0)
      {
        f.Delete();
      }
    } // RemoveEmptyLogFile
    

提交回复
热议问题