Чтобы построить из приведенного выше ответа, используя SortByFolderFileAppender.
Вот как мы решили проблему, используя скользящую дату для имен файлов журналов. Я изменил staticLogFileName на true, чтобы все имя файла передавалось в метод OpenFile.
Если имя файла заканчивается на «.log», то ничего добавлять не нужно. Я предполагаю, что произошла какая-то блокировка, и я хочу, чтобы log4net снова попытался использовать то же имя файла, надеясь, что предыдущая блокировка была снята.
Хотя я не уверен, может ли это привести к бесконечному вызову OpenFile, если файл заблокирован и не отпускает его. Мы создали веб-сервис, используя шаблон производителя-потребителя, чтобы регистрировать все в одном месте из всех приложений в системе, которых в настоящее время насчитывается десять и растет.
Нам не нужно включать log4net в какие-либо другие приложения, но нам нужно было создать класс веб-клиента, доступный для всех приложений, чтобы использовать его для входа в веб-службу.
Результат для имени файла - «Logs \ Client \ 2017 \ 11 \ 08.log» и, очевидно, меняется каждый день.
protected override void OpenFile( string fileName, bool append )
{
// append "\yyyy\mm\dd.log" to create the correct filename.
if ( !fileName.EndsWith( ".log") )
fileName = $@"{fileName}\{DateTime.Now:yyyy\\MM\\dd}.log";
base.OpenFile( fileName, append );
}
Модификация конфигурации сверху.
<appender name="xxxRollingFileAppender" type="namespace.xxxRollingFileAppender">
<file value="Logs\Client"/>
<staticLogFileName value="true"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="40"/>
<maximumFileSize value="1MB"/>
<encoding value="utf-8"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{HH:mm:ss.fff}|%-5level|%message%newline"/>
</layout>
</appender>
person
kdahl
schedule
08.11.2017