Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can Log4Net Delete Log Files Automatically? [duplicate]

I am using log4net RollingFileAppender in a windows service program written in C#. The number and size of files in logs directory is growing too fast, need cleanup. The configuration is below:

<appender name="Rolling Log" type="log4net.Appender.RollingFileAppender">
<file value="..\logs\MyProgram.%cs{instanceName}.log" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value=".yyyy-MM-dd.lo\g" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="150MB" />
<layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="%date [%-5level] %property{remoteUser} [%threadIdentity] %type{1}.%method - %message%newline%exception" />
</layout>

I only want to keep 30 days of logs. How can I configure log4net to delete the logs automatically? If not available through log4net, what solutions would I have?

Thank you in advance.

like image 219
tonyjy Avatar asked Nov 23 '10 19:11

tonyjy


People also ask

Where are log4net logs stored?

The log4net. config file is located in the \Enterprise7\bin\ directory and is the configuration file for the log4net logging application.

What is Maxsizerollbackups in log4net?

Gets or sets the maximum number of backup files that are kept before the oldest is erased.

What is the use of log4net in C#?

Log4net provides a simple mechanism for logging information to a variety of sources. Information is logged via one or more loggers. These loggers provide 5 levels of logging: Debug.


2 Answers

Here is another question from here on SO that asks essentially the same thing: Log4Net: set Max backup files on RollingFileAppender with rolling Date

The consensus was that log4net does not support it directly. One poster says that it has been implemented in log4net's source code repository, but has not been released yet. Another poster shows some code that he uses to cleanup old files periodically.

like image 131
wageoghe Avatar answered Nov 07 '22 12:11

wageoghe


I'm pretty sure that you can't do with the existing appender, although I can't confirm it.

However, I see two options:

  1. Create your own appender, subclassing RollingFileAppender (or, if you want more control, subclass FileAppender). Then change your config file to use that appender (change the appender element).
  2. Create a .bat file that deletes files older than x days (see: Batch file to delete files older than N days). Then create a task in Windows (http://support.microsoft.com/kb/308569) that runs this bat file e.g. every day.
like image 4
steinar Avatar answered Nov 07 '22 12:11

steinar