2017-09-25 14 views
0

私はscalaに関するプロジェクトを持っています。 私は私のコントローラでログを使用し、私はロガーログバックのフィルターマーカー

import com.typesafe.scalalogging.Logger 
val log     = Logger(getClass) 

と二つのマーカー

import org.slf4j.{Marker, MarkerFactory} 
    private val marker: Marker = MarkerFactory.getMarker("DP") 
    private val marker2: Marker = MarkerFactory.getMarker("ST") 

を作成 https://github.com/typesafehub/scala-logging

を記録するために、このLIBを使用

log.debug(marker, "----" 
log.debug(marker2, "++++") 

これが私のlogbackです

<appender name="STDOUTTime" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%coloredLevel %logger{30} - %marker - %d{yyyy/MM/dd/HH:mm:ss.SSS/Z} - %message%n%xException{3}</pattern> 
    </encoder> 

    <turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter"> 
     <Marker>DP</Marker> 
     <OnMatch>DENY</OnMatch> 
     <OnMismatch>DENY</OnMismatch> 
    </turboFilter> 

    <turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter"> 
     <Marker>ST</Marker> 
     <onMatch>DENY</onMatch> 
     <onMismatch>DENY</onMismatch> 
    </turboFilter> 
</appender> 

<logger name="ds.forwarding" level="DEBUG"> 
    <appender-ref ref="STDOUTTime"/> 
</logger> 

<root level="ERROR"> 

</root> 

私は私のコントローラを実行したときに、今私は、コンソールに出力を持っている:

[debug] d.f.c.a.s.InputStatisticController - DP - 2017/09/25/11:55:58.603/+0300 - ---- 
[debug] d.f.c.a.s.InputStatisticController - ST - 2017/09/25/11:55:58.603/+0300 - ++++ 

今私は疑問を持っている:

  • なぜマーカーとMARKER2なぜDENY​​が動作しないのですか?
  • 2つのマーカーを除外するにはどうすればよいですか?
  • マーカーを1つだけ除外するにはどうすればよいですか?
+0

これは、ロガーとロギングを作成したクラス名またはパッケージ名が 'test'である可能性があります。そのため、ルートロガーより優先されます – Rjk

答えて

1

logback.xmlは、DPSTの両方のマーカーを拒否しています。あなたのファイルに関する

<configuration> 
    <turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter"> 
     <Marker>DP</Marker> 
     <OnMatch>DENY</OnMatch> 
    </turboFilter> 

    <turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter"> 
     <Marker>ST</Marker> 
     <onMatch>DENY</onMatch> 
    </turboFilter> 

    <appender name="STDOUTTime" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>%coloredLevel %logger{30} - %marker - %d{yyyy/MM/dd/HH:mm:ss.SSS/Z} - %message%n%xException{3}</pattern> 
     </encoder> 

    </appender> 

    <root level="DEBUG"> 
     <appender-ref ref="STDOUTTime"/> 
    </root> 
</configuration> 

ミス:

  1. あなたのファイルが<configuration>で始まり、</configuration>

  2. フィルタで終わっていないが、正しい名前空間ではありません。それらは<configuration>(appenderと同じレベル)の下にある必要があります。

  3. <onMisMatch>フラグを使用する必要はありません。物事を混ぜ合わせる原因になることがあります。

  4. ロガーの名前はds.forwardingなので、クラスではそのロガーを必ず呼び出してください。あなたの場合、getClassメソッドでロガーを呼び出します。 logback.xmlファイルではrootロガーにappenderを追加しました。したがって、Logger(getClass)メソッドで呼び出すだけで十分です。

  5. レベルには常に注意してください。レベルをDEBUGに設定しました。あなたが適切な構成を設定すると、あなたがいない場合

は、単にあなたがロガーは、それを印刷したい場合はALLOWから<onMatch>プロパティを変更、またはDENY。両方をALLOWに設定するだけで、すべてのマーカーが印刷されます。一方、両方をDENYに設定すると、マーカーは印刷されません。

関連する問題