2010-11-23 3 views
18

Я использую log4net RollingFileAppender в программе обслуживания Windows, написанной на C#. Количество и размер файлов в каталоге журналов растет слишком быстро, требуется очистка. Конфигурация ниже:Может ли Log4Net автоматически удалять файлы журнала?

<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> 

Я только хочу, чтобы держать 30 дней бревен. Как настроить log4net для автоматического удаления журналов? Какие возможности у меня есть в log4net, если они недоступны?

Заранее спасибо.

ответ

-1

This должен оказать некоторую помощь. Посмотрите раздел RollingFileAppender

+3

Он уже использует RollingFileAppender, и в этой документации нет информации, если вы можете это сделать или нет. – steinar 2010-11-23 19:56:17

+1

Нечего делать. – 2014-11-05 16:31:41

8

Вот еще один вопрос здесь на SO, который спрашивает по существу то же самое: Log4Net: set Max backup files on RollingFileAppender with rolling Date

консенсус в том, что log4net не поддерживает его напрямую. Один плакат говорит, что он был реализован в репозитории исходного кода log4net, но еще не выпущен. Другой плакат показывает некоторый код, который он использует для периодической очистки старых файлов.

+0

Этот вариант выглядит привлекательно для меня, потому что это кажется более простым, чем переопределение RollingFileAppender. Теперь я планирую добавить задание ведения журнала, которое запускается планировщиком, таким как Quartz.Net. – tonyjy 2010-11-23 20:43:40

4

Я уверен, что вы не можете сделать это с существующим приложением, хотя я не могу его подтвердить.

Однако, я вижу два варианта:

  1. Создайте свой собственный Appender, подклассов RollingFileAppender (или, если вы хотите большего контроля, подкласс FileAppender). Затем измените свой файл конфигурации, чтобы использовать этот appender (измените элемент appender).
  2. Создайте файл .bat, который удаляет файлы старше x дней (см.: Batch file to delete files older than N days). Затем создайте задачу в Windows (http://support.microsoft.com/kb/308569), которая запускает этот файл bat, например. каждый день.