Как сделать принудительное переключение при запуске приложения с Log4net RolloverFileAppender?
-
03-07-2019 - |
Вопрос
Настройте Log4Net в нашем приложении для использования имени с отметкой даты и ограничения размера файла 10 Мегабайт.
Это автоматически вызывает переход на новый файл в полночь и при достижении предела в 10 мегагерц.
Я также хотел бы перенести регистрацию в новый файл каждый раз, когда приложение запускается (или закрывается).
Могу ли я получить все три поведения при пролонгации?
Решение
Установите appendToFile в false в ваш конфигурационный файл.
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
....
<appendToFile value="false" />
....
</appender>
РЕДАКТИРОВАТЬ: Чтобы ответить на комментарий Крейга:
Если вы правильно настроили StaticLogFileName и CountDirection (см. http: //logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.html для получения дополнительной информации), затем все будет работать по своему усмотрению. Мы программно настраиваем регистратор в нашем приложении, где мы используем это, но вот как выглядит код:
Dim Layout As New PatternLayout("%date{yyyy-MM-dd HH:mm:ss,fff} [%-6thread] %-5level %type{2}.%method(%line) - %message%newline")
Dim Appender As New log4net.Appender.RollingFileAppender()
Appender.File = Path.Combine(FileSystemHelper.LogDirectory, LogFileName)
Appender.Layout = Layout
Appender.AppendToFile = False ' we will start a new one when the program starts'
Appender.Name = "RollingLogFileAppender"
Appender.Threshold = LogLevel() 'May want to set this by configuration'
Appender.RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Size 'This means it will start a new log file each time the log grows to 10Mb'
Appender.MaximumFileSize = "10MB"
Appender.MaxSizeRollBackups = -1 'keep an infinite number of logs'
Appender.StaticLogFileName = True
Appender.CountDirection = 1 ' to reduce rollover costs'
log4net.Config.BasicConfigurator.Configure(Appender)
Appender.ActivateOptions()