Я использую Logback с SLF4J, лежащим в основе моего приложения, и хотел бы отправить пару конкретных сообщений журнала в файл, отдельный от основного файла журнала. Я действительно не хочу делать это с уровнями журнала, поскольку это означало бы, что я не смог бы отфильтровать их из основного журнала, если бы уровни были настроены (или, скорее, я мог бы, но только путаясь с обоими настройками уровня журнала) .
Я знаю, что logback предлагает опцию Marker для сообщений журнала, которая звучит как лучший подход, однако я пробовал различные предложенные подходы фильтрации из документации logback, либо либо не получать журналы, либо два идентичных полных файла журнала.
Любая помощь высоко ценится.
Попытка:
https://logback.qos.ch/manual/appenders.html:
<evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">
<expression>
(marker != null) && (marker.contains("MY_MARKER")
</expression>
</evaluator>
https://logback.qos.ch/manual/filters.html:
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
<expression>return message.contains("billing");</expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
</filter>
Желаемый результат:
main.log:
- marker = Фред - сообщение1
- marker = burt - message2
- marker = ernie - message3
- маркер = стивер - сообщение6
dave.log:
- marker = dave - message4
- marker = dave - сообщение 5
Текущее поведение:
main.log:
- маркер = Фред - сообщение1
- marker = burt - message2
- marker = ernie - message3
- marker = dave - message4
- marker = dave - сообщение 5
- маркер = стивер - сообщение6
dave.log:
- маркер = Фред - сообщение1
- маркер = бурт - сообщение2
- маркер = Эрни - сообщение3
- маркер = дэйв - сообщение4
- маркер = дэйв - сообщение 5
- маркер = стивер - сообщение6