Как программно свернуть файл журнала в Logback - PullRequest
3 голосов
/ 03 января 2012

По этой ссылке: http://logback.qos.ch/manual/appenders.html (в RollingFileAppender)

Мне кажется, что Logback предоставляет только ограниченный способ, как накатывать файл журнала. В зависимости от времени, он может катиться файл журнала только через определенный интервал, как один раз в час, один раз в минуту. Там не упоминается, как программно накатить файл журнала, что я желание. Мне нужен какой-то способ, позволяющий пользователям решать, когда нужно накатывать файл журнала и файл журнала. будет использоваться позже пользователем.

Я провел некоторое исследование с помощью Google, но ничего не нашел. Подскажите, пожалуйста, как программно накатить файл журнала

Спасибо заранее.

Редактировать: По крайней мере, мне нужен какой-то способ указать интервал, например, бросать файл журнала раз в десять минут.

Ответы [ 2 ]

2 голосов
/ 03 января 2012

Предлагаю сделать собственную реализацию TriggeringPolicy.Итак, создайте свою собственную реализацию (она проверит глобальную переменную, установленную пользователем) и настройте logback с вашим классом.

Не уверен насчет вашего "Edit:"Походит на стандартную TimeBasedRollingPolicy конфигурацию.

0 голосов
/ 24 апреля 2018

в пределах (начало приложения) logback.groovy можно, например, ролловер с произвольным сложным шпунтованным кодом, основанным на этой идее:

appender( 'FILE', RollingFileAppender ) {
  ...
  if ( myConditionTrue )
    component.rollover()  // directly rollover on app start / logback.groovy load
}

, если кто-то захочет периодически выполнять переход на основе некоторого проверенного условия, можно сделать это на основе scan(interval):

appender( ... ){
  ...
  if ( myConditionTrue )
    component.rollover()
}
scan(30)  // reparse logback.groovy every 30 s if the setup had been changed

упоминаются и другие приятные вещи здесь :

  • SiftingAppender/MDC использование на основе discriminator:id, MDC.put('id','<some-id>'), log.info(ClassicConstants.FINALIZE_SESSION_MARKER)
  • напрямую вызывая его из запущенного приложения ala log.getAppender('FILE').rollover()
...