代码之家  ›  专栏  ›  技术社区  ›  Slavik Muz

在logback中筛选标记

  •  2
  • Slavik Muz  · 技术社区  · 7 年前

    我有一个关于scala的项目。 我使用这个库记录日志 https://github.com/typesafehub/scala-logging

    我创建记录器

    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")
    

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

    这是我的回复

    <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 - ++++
    

    • 为什么marker和marker2可见,为什么DENY不起作用?
    • 如何排除两个标记?
    1 回复  |  直到 7 年前
        1
  •  3
  •   fcat    7 年前

    这是一个 logback.xml DP ST 标记。

    <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. 筛选器不在正确的命名空间中。他们应该在 <配置>

    3. 无需使用 <onMisMatch> 您案例中的标志。这可能会导致事情混淆。

    4. 因为您的记录器名为 ds.forwarding ,在类中,您必须确保您正在调用该记录器。在您的情况下,您可以使用 getClass 登录。xml 文件,我添加了 appender root 记录器。因此,通过调用它就足够了 Logger(getClass)

    5. 始终注意级别。我将级别设置为 DEBUG .

    正确设置配置后,只需更改 <onMatch> 属性到 ALLOW 如果您希望记录器打印它,或 DENY 允许 否认