How can I clear the log4net log file?

I work with log4net. I want to add a button to my GUI, when the user clicks on this button, the log file will be cleared. How can i do this?

Thank you so much

+5
source share
5 answers

It is not supported out of the box from log4net. However, you can use RollingFileAppender and create a manual class / method to clear / delete the log file.

For Log4Net Help : Set Maximum Backup Files to RollingFileAppender with Moving Date

Another way to avoid locking the file would be to set the minimum lock level in the log file with:

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

I also had this problem.

:

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

, ! . appender , :

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

, :

        RollingFileAppender fileAppender = LogManager.GetRepository()
                        .GetAppenders().FirstOrDefault(appender => appender is RollingFileAppender) as RollingFileAppender;


        if (fileAppender != null && File.Exists(((RollingFileAppender)fileAppender).File))
        {
            string path = ((RollingFileAppender)fileAppender).File;
            log4net.Appender.FileAppender curAppender = fileAppender as log4net.Appender.FileAppender;
            curAppender.File = path;

            FileStream fs = null;
            try
            {
                fs = new FileStream(path, FileMode.Create);
            }
            catch(Exception ex)
            {
                (log4net.LogManager.GetLogger(this.GetType())).Error("Could not clear the file log", ex);
            }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                }

            }
        }

+2

(. answer), , , .

, RollingFileAppenders:

// Release the lock on the log4net log files
var appenders = log4net.LogManager.GetRepository().GetAppenders();
foreach (var appender in appenders)
{
    var rollingFileAppender = appender as log4net.Appender.RollingFileAppender;
    if (rollingFileAppender != null)
    {
        rollingFileAppender.ImmediateFlush = true;
        rollingFileAppender.LockingModel = new log4net.Appender.FileAppender.MinimalLock();
        rollingFileAppender.ActivateOptions();
    }
}

.

+2

 File.WriteAllText("C:/Users.../log.xml", "");

.

0

All Articles