2017-09-14 2 views
1

J'ai Spring Boot 2.0.0.M3 la version et un logback 1.2.3 et suivant fichier de configuration:Spring Boot avec Logback configuration du filtre ne fonctionne pas

<configuration debug="true"> 
    <springProfile name="local"> 
      <springProperty name="springAppName" source="spring.application.name"/> 
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>%green(%d{yyyy-MM-dd HH:mm:ss}) [${springAppName},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %highlight(%-5level) %cyan(%logger{15}) %m%n</pattern> 
      <charset>utf8</charset> 
     </encoder> 
     <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> 
      <evaluator> 
       <expression>logger.contains("test")</expression> 
      </evaluator> 
      <onMatch>DENY</onMatch> 
     </filter> 
    </appender> 
    <root level="info"> 
     <appender-ref ref="CONSOLE"/> 
    </root> 
    </springProfile> 
</configuration> 

Mais chaque fois que je commence ma demande il échoue. Je ouvre une session:

11:35:16,891 |-WARN in Logger[org.springframework.core.env.PropertySourcesPropertyResolver] - No appenders present in context [default] for logger [org.springframework.core.env.PropertySourcesPropertyResolver]. 
    11:35:16,891 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 
    11:35:16,891 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CONSOLE] 
    11:35:16,896 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 
    11:35:16,930 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.boolex.JaninoEventEvaluator] for [evaluator] property 
    Process finished with exit code 1 

Je suppose que quelque chose ne va pas avec EvaluatorFilter dois-je choisir un spécifique et ajouter des dépendances supplémentaires pour cela?

+0

ce qui se passe si vous supprimez le nœud de filtre tous ensemble? – Hasson

+0

@Hasson en fait cela fonctionne, mais j'ai besoin de filtrer quelques journaux –

+0

pourquoi ne pas filtrer en utilisant le logger avec le nom du paquet? ou vous avez besoin de filtrer par expression? – Hasson

Répondre

1

Est-ce l'expression que vous utilisez? essayez ceci ...

<filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
    <evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator --> 
    <expression>return formattedMessage.contains("test");</expression> 
    </evaluator> 
    <OnMismatch>NEUTRAL</OnMismatch> 
    <OnMatch>DENY</OnMatch> 
</filter> 

ce filtre évaluateur supprimera tous les événements de journalisation dont le message contient la chaîne "test".

+1

Cela ne fonctionne pas pour moi, le même résultat dans les journaux –

+0

vous devrez peut-être changer 'logger' en 'formatedMessage' fait ce travail? Alors, où voulez-vous que le test soit? est-ce dans le nom de l'enregistreur? ou dans le message réel? J'ai changé cela dans la réponse – Hasson

+0

Nope, le même résultat –

0

Les dépendances requises du logback sont-elles en place?

Voir Logback dependencies page. En particulier, pour que JaninoEventEvaluator fonctionne, Janino et sa dépendance commons-compiler sont requis.

J'ai vu le même problème que lorsque les deux ne sont pas dans le chemin de classe, l'application juste sort en silence avec le code de sortie 1.