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

不同的类有不同的日志级别

曾典
2023-03-14

下面,我有一个全局应用的日志回溯配置。

我想全局使日志记录级别错误,除了一个类。对于一个特定的类,我想使日志记录级别 INFO。我该怎么做?

<configuration scan="truef" scanPeriod="30 seconds">

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="com.foo.web.online.util.log.LogMaskingPatternLayout">

                <pattern>[START] Date: %d{yyyy-MM-dd} | Time: %d{HH:mm:ss.SSS} | Level: %-5level | Logger: %logger{5} | Marker: %marker | CIP: %X{clientIp} | UserAgent: %X{userAgent} | Website: %X{website} | SID: %X{sessionId} | RID: %X{requestId} | CID: %X{conversationId} | TID: %X{transactionId} | App: %X{app} | SubApp: %X{subApp} |  Msg: %msg [END] %n</pattern>
                </layout>     
            </encoder>
    </appender>

    <appender name="SIFT_INFO" class="ch.qos.logback.classic.sift.SiftingAppender">
        <discriminator class="ch.qos.logback.classic.sift.JNDIBasedContextDiscriminator">
            <defaultValue>unknown</defaultValue>
        </discriminator>
        <sift>
            <appender name="FILE-${contextName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>/opt/local/logs/online/${contextName}.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <fileNamePattern>/opt/local/logs/online/${contextName}-%d{yyyy-MM-dd}.log</fileNamePattern>
                    <maxHistory>7</maxHistory>
                </rollingPolicy>
                <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                    <layout class="com.foo.web.online.util.log.LogMaskingPatternLayout">
                         <pattern>[START] Date: %d{yyyy-MM-dd} | Time: %d{HH:mm:ss.SSS} | Level: %-5level | Logger: %logger{5} | Marker: %marker | CIP: %X{clientIp} | UserAgent: %X{userAgent} | Website: %X{website} | SID: %X{sessionId} | RID: %X{requestId} | App: %X{app} | SubApp: %X{subApp} | Page: %X{page} | Device: %X{device} | Browser: %X{browser} | Lang: %X{language} | IPCountry: %X{geoIpCountry} | IPCity: %X{geoIpCity} | ErrCode: %X{errorCode} | Msg: %msg [END] %n</pattern>
                </layout>  
                    </encoder>
            </appender>
        </sift>
    </appender>


    <logger name="com.foo" level="INFO">
        <appender-ref ref="SIFT_INFO" />
        <!-- <appender-ref ref="STDOUT" /> -->
    </logger>

    <logger name="org.hibernate.type" level="INFO" />
    <logger name="org.hibernate" level="INFO" />


</configuration>

共有1个答案

席烨
2023-03-14

您可以像这样使用根日志记录器:

<root>
    <level value="ERROR"/>
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="SIFT_INFO"/>
</root>
<logger name="org.mycompany.MyClass">
    <level value="INFO"/>
</logger>
 类似资料:
  • 如何编写一个简单的log4j2.xml文件,将不同级别的日志放入不同的文件中? 例如,我们有错误日志,任何信息日志,我需要将所有错误日志消息推入一个日志文件,所有信息日志消息推入另一个文件。 我怎么做?

  • 以下是我的java logback配置: 我想在这里做的是:我有两个日志追加器:一个用于控制台,另一个用于日志文件;但是对于相同的java软件包(例如:组织.apache.zookeeper),我想使用两个不同的日志级别,INFO用于文件追加器和错误用于康多尔;但是我的日志配置优势无法正常工作。任何人都可以找出我的错误或一些解决方案吗?

  • SLF4J具有以下日志级别 JDK日志记录具有以下日志级别 如果我想将日志级别设置为DEBUG,那么该级别在JDK日志中不可用。谁能解释一下在这种情况下我们如何获得调试级别的日志记录。对于这种情况,我们需要做什么额外的配置吗? 已更新 这是我的属性文件配置 请让我知道我哪里错了。

  • 我的目标是: 实现所有自定义,内置记录器从同一个包到不同的文件。 信息-信息日志文件 我尝试的是: 问题是: 记录器名称相同。因此,最新的记录器只能工作。在这种情况下,Info可以工作,但也不能调试。 我的疑问是: 我引用了这么多帖子。我认为下面的方法是有效的。 按此处所述,将每一个作为自定义记录器。但我确信这是否正确的解决方案

  • 在log4j2文档log4j2 java配置中,默认配置为: 根本就不在那里。它仍将只打印出错误日志。 问题 是否有其他人遇到此问题? 有人能复制它吗? 有人知道怎么修吗?我几乎要给别人一块钱。不过,我肯定会把他们的答案标成绿色。 我的最终目标是让特定的记录器发送SMTP请求。我很确定我知道怎么做,我只是在和这个小问题作斗争

  • 我希望文件记录器以这样的方式配置日志类别'X' 记录器one在信息级别上记录“X”,在调试级别上记录其他东西 记录器在调试级别上有两个日志“x”