Как я могу настроить Logback для регистрации разных уровней для регистратора в разных местах назначения?
Например, учитывая следующую конфигурацию Logback, Logback будет записывать INFO
сообщения в STDOUT
и ERROR
сообщения в STDERR
?
(Обратите внимание, что этот пример является вариантом примера, logback-examples/src/main/java/chapters/configuration/sample4.xml
показанного в главе 3: Конфигурация обратного вызова ).
<configuration>
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="STDERR"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
<target>System.err</target>
</appender>
<!-- What is the effective level of "chapters.configuration"? -->
<logger name="chapters.configuration" level="INFO" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
<logger name="chapters.configuration" level="ERROR" additivity="false">
<appender-ref ref="STDERR" />
</logger>
<!-- turn OFF all logging (children can override) -->
<root level="OFF">
<appender-ref ref="STDOUT" />
</root>
</configuration>
levels are ordered as follows: TRACE < DEBUG < INFO < WARN < ERROR.
Ответы:
Обновление: для подхода на основе всей конфигурации, использующего Groovy, см . Ответ Дина Хиллера .
-
Вы можете сделать некоторые интересные вещи с фильтрами Logback . Приведенная ниже конфигурация будет выводить только предупреждения и сообщения об ошибках в stderr, а все остальное в stdout.
logback.xml
com.foo.StdOutFilter
com.foo.ErrOutFilter
источник
Я считаю, что это было бы самое простое решение:
источник
ThresholdFilter
s вместо.<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
какова реальная роль указания<root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="STDERR" /> </root>
в logback.xml?<onMatch>
и<onMismatch>
не определилсяThresholdFilter
. Просто удалите их, и это будет работать как задумано.Решение, основанное только на конфигурации , с ThresoldFilter и LevelFilters для простоты понимания :
источник
ThresoldFilter
.ThresoldFilter
STDOUT вместо пятиLevelFilter
?хорошо, вот мой любимый способ сделать это в xml. Я делаю это для версии Eclipse, чтобы я мог
и по какой-то причине ТАК не показывает все это должным образом, но большинство, кажется, там ...
источник
logback.groovy
версия этой линии взгляда?Самое простое решение - использовать
ThresholdFilter
на appenders:Полный пример:
Обновление: Как указал Майк в комментарии, сообщения с уровнем ОШИБКИ печатаются здесь как в STDOUT, так и в STDERR. Не уверен, что было намерением ОП, однако. Вы можете попробовать ответ Майка, если это не то, что вы хотели.
источник
Это конфигурация , которую я использую, который хорошо работает, он основан на XML + JaninoEventEvaluator (требуется Janino библиотеки для добавления в Classpath)
источник
Я использую logback.groovy для настройки моего входа, но вы можете сделать это и с помощью xml config:
Я думаю, что использовать GEventEvaluator проще, потому что нет необходимости создавать классы фильтров.
Я прошу прощения за мой английский!
источник
Попробуй это. Вы можете просто использовать встроенные
ThresholdFilter
иLevelFilter
. Нет необходимости создавать свои собственные фильтры программно. В этом примере уровни WARN и ERROR записываются в System.err, а остальные в System.out:источник
Я не возьму на себя ответственность за этот ответ, так как он представляет собой просто комбинацию двух лучших ответов выше: ответ X. Wo Satuk и ответ Sébastien Helbert:
ThresholdFilter
прекрасно, но вы не можете настроить его так, чтобы он имел как верхний уровень, так и нижний уровень *, но комбинируя его с двумя,LevelFilters
установите на «DENY»WARN
и работайтеERROR
угощение.Очень важно : не забывайте
<target>System.err</target>
тег в приложении STDERR: мое упущение заставило меня расстроиться на несколько минут.* у него, однако, есть метод
decide
в API, но я понятия не имею, как бы вы использовали его в этом контексте.источник
Программирование не требуется. Конфигурация сделает вашу жизнь проще.
Ниже приведена конфигурация, которая записывает журналы разного уровня в разные файлы.
источник
источник
Пример вывода цветных сообщений уровня «INFO» или выше на консоль и сообщений уровня «WARN» или выше в файл .
Ваш файл logback.xml :
источник