2013-12-09 7 views
0

В принципе у меня есть этот конфиг для log4net:log4net создает неверное имя файла журнала после прокатки лог-файлов

<?xml version="1.0" encoding="utf-8"?> 
<log4net> 
    <root> 
    <level value="INFO" /> 
    <appender-ref ref="RollingFileAppenderWithDeletion" /> 
    </root> 
    <appender name="RollingFileAppenderWithDeletion" type="Namespace.RollingFileAppenderWithDeletion"> 
    <file type="log4net.Util.PatternString" value="Logs/%property{LogName}/log.%property{ServiceName}-PID-%processid_%date{yyyyMMdd}.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Date" /> 
    <datePattern value="yyyyMMMdd" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="50MB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5level %date{dd MMM yyyy HH:mm:ss,ffff} [%thread] %exception - %message%newline"/> 
    </layout> 
    </appender> 
</log4net> 

Теперь у меня есть проблема. Каждый раз, когда log4net загружает файл журнала, он не изменяет дату в файле журнала. Например, если сегодняшний лог-файл - log.MyServiceName-PID-1234_20131208.log, завтра после прокатки файла имя файла не изменится, поэтому в итоге у меня будет откат файла журнала и активного файла журнала как этот

  1. log.QA3NewMarkingToolAdminService-ПИД-17584_20131208.log
  2. log.QA3NewMarkingToolAdminService-PID-17584_20131208.log2013Dec08

То, что я хотел бы иметь

  1. log.QA3NewMarkingToolAdminService-PID-17584_20131209.log - файл активного журнала
  2. log.QA3NewMarkingToolAdminService-PID-17584_20131208.log2013Dec08 - откат

Теперь я наткнулся this post, но это мне не помогло. В частности, если я удаляю шаблон даты из файла и устанавливаю preserveLogFileNameExtension в true, я больше не могу видеть дату в активном файле журнала. Если я пойду дальше и установил staticLogFileName - false, у меня больше нет активных файлов журналов, вместо этого у активных файлов журнала есть откат назад.

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

Я использую log4net version 1.2.10.0. К сожалению, я не могу обновить его до более новой версии.

Обновление Это обычная реализация RollingFileAppenderWithDeletion. Он просто очищает старые откатные файлы после того, как произошел прогон файла журнала.

public class RollingFileAppenderWithDeletion :RollingFileAppender 
    { 
     private IFileBurner m_fileBurner; 
     private const int checkMinutes = 1664; 
     public RollingFileAppenderWithDeletion() 
     { 
      m_fileBurner = FileBurner.Instance; 

     } 

     protected override void AdjustFileBeforeAppend() 
     { 
      base.AdjustFileBeforeAppend(); 

      string path = base.File; 
      string directoryPath = Path.GetDirectoryName(path); 

      IDeletionRequirements requirements = new DeletionRequirements(); 
      requirements.CheckEveryMinutes = checkMinutes; 
      requirements.DayLimit = MaxSizeRollBackups; 
      requirements.Directories = new List<string> { directoryPath }; 

      m_fileBurner.ClearLogFiles(requirements); 

     } 
    } 

ответ

0

Вы используете тип Namespace.RollingAppenderWithDeletion, который, безусловно, не является стандартным Appender. Попробуйте использовать тип log4net.Appender.RollingFileAppender и посмотрите, работает ли это. Когда вы используете свой собственный пользователь, вам нужно опубликовать какой-либо код или найти, почему код имени файла не вызывается.

+0

привет, спасибо за ответ, отредактировал сообщение. Как вы можете видеть, ничего особенного в пользовательской реализации. Все, что он делает, - это очистка старых файлов журналов. –

+0

Попробуйте использовать этот стандарт, чтобы проверить правильность дат. Если это так, вам нужно отладить ваш RollingFileAppenderWithDeletion. Однако, если я посмотрю на ваше расширение RollingFileAppender, я уверен, что добавит нужную вам функцию. Попробуйте подключить отладчик и посмотреть, что произойдет. – Peter

+0

Я изменил конфигурацию на RollingFileAppender, это тоже не сработало. Помогло бы ли это устранить ваши сомнения, если я скажу, что расширение RollingFileAppender добавляет функцию, которую я хочу? –

Смежные вопросы