2009-03-13 2 views
29

Я использую Log4net какое-то время, и это потрясающая структура ведения журнала, особенно при подключении к Castle.Windsor. Однако ...Максимальный размер файла журнала LogFileAppender в Log4Net

Обычно я использую скопированный файл appender, но это привело к слишком большому количеству файлов журнала, чем я на самом деле хочу, поэтому вместо моего последнего проекта вместо этого использовался базовый LogFileAppender, но проблема заключается в том, файл журнала продолжает расти (казалось бы, навсегда).

Как я могу сказать Appender, чтобы не идти через фиксированный размер (и начать удаление старых журналов и добавления новые, чтобы файл

Моя текущая конфигурация выглядит следующим образом:?

<appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
    <file value="E:\Logs\iWater\Schedule-Dispatch-API.log"/> 
    <param name="AppendToFile" value="true"/> 
    <maximumFileSize value="2048KB"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-16date{dd MMM HH:mm:ss} %-7level %-25.35logger{1} %message%newline"/> 
    </layout> 
</appender> 

Its кажется, что атрибут maximumFileSize не соблюдается. Есть решения?

Кроме того, как я могу настроить качению файл Appender создать только 1 файл (когда-либо)?

ответ

55

FileAppender класс не имеет свойства MaxFileSize/MaximumFileSize. Вы получаете их только в том случае, если используете RollingFileAppender. Вот пример, который ограничит ваш файл фиксированным максимальным размером без резервных копий (установите maxSizeRollBackups на 0). Обратите внимание, что, когда файл достигает максимальный размер, он обрежет (в основном удаляет все существующее протоколирование и начинается за кадр):

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="log.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="0" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
</appender> 
+19

Чтобы избежать полного усечения и до сих пор решений заявленной проблемы _too многих журналы files_, я рекомендовал бы установив maxSizeRollBackups к низкому числу, например 2, и, возможно, соответственно уменьшает максимальное значение FileSize (для 2, деление на 3). Таким образом, сразу после усечения у вас все еще есть две трети самых последних доступных журнальных сообщений, а не нет. –

2

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

Чтобы ограничить количество пролонгировать файлов с помощью атрибута MaxSizeRollBackups