当前位置: 首页 > 知识库问答 >
问题:

在日志中筛选标记

袁奇逸
2023-03-14

我在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个答案

郭翰翮
2023-03-14

这里有一个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>

关于您的文件的错误:

>

  • 文件不以 开头,以结尾

    由于您的记录器命名为ds.forwarding,因此在类中,您必须确保正在调用该记录器。在您的示例中,使用GetClass方法调用记录器。在我的logback.xml文件中,我将appender添加到我的root记录器中。因此,通过Logger(getClass)方法调用它就足够了。

    一定要注意水平。我将级别设置为debug

    正确设置配置后,只需将 属性更改为allow(如果您希望记录器打印它),或者将deny(如果您不希望记录器打印它)。只需将两者设置为允许就会打印所有标记,另一方面,如果将两者设置为拒绝,则不会打印该标记。

  •  类似资料:
    • 我在Azure中有一个应用程序洞察资源。在我们的Java应用程序中,我们有一个log4j.xml文件,它根据服务名称写入多个日志文件。 我正在将Application Insights appender添加到日志记录中,并且能够在Application Insights资源中看到不同日志文件的所有日志。但是,我无法在Application Insights中通过日志文件名进行筛选,因此跟踪日志是没

    • 问题内容: 我想根据日期从数据库中筛选值。 数据库中的日期包含以下值:2008-12-28 18:00:00。我的班级有一个DateTime变量,具体取决于我要过滤的变量。理想情况下,它将像这样工作: +根据需要调整myDateTime.Date格式。 但是它抛出一个EvaluateException:“该表达式包含未定义的函数调用DATE()。” 尽管如果直接执行SQL语句,则可以在过滤器中使用

    • https://graph.microsoft.com/v1.0/users?$select=id,displayName,jobTitle,createdDateTime 无论我输入任何筛选器,请参见下面的示例,我从未得到任何关于“'created datetime>2018-08-02t13:01:13z'中位置26处的语法错误”的错误响应。 https://graph.microsoft.c

    • 我已经根据本手册将Spring Boot配置为使用Log4j2。我想通过根记录器中设置的级别过滤所有日志。下面是我的log4j2-spring.xml文件: 问题是,我仍然看到来自hibernate和spring框架的DEBUG输出。我设法通过为某些条目指定完整的包名来筛选单个日志,如下所示:

    • JSoup在这里。我有以下我试图解析的超文本标记语言: 不幸的是,它的格式有点不正确(在

    • 我试着在附加程序上操作级别过滤器,但似乎没有太大作用