logback.xml中additivity的使用

1. jar包引入

<!-- logback -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

2. Java代码

package com.smart;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Parent {
    private static Logger logger = LoggerFactory.getLogger(Parent.class);
    public static void printLog() {
        logger.debug("execute Parent.printlog()");
    }
}
package com.smart.logback;

import com.smart.Parent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class FirstLogbackConfigFile {
    private static Logger logger = LoggerFactory.getLogger(FirstLogbackConfigFile.class);

    public static void main(String[] args){
        firstLog();
    }
    public static void firstLog() {
        Parent.printLog();
        logger.debug("execute com.smart.logback.firstlog()");
    }
}

3. logback-test.xml

<configuration scan="true" scanPeriod="60 seconds" debug="false" packagingData="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
    </root>

    <!--
        additivity="false" 表示当前以及子logger都不会使用当前logger父logger的appender,也不会使用其他logger的appender,
        当前以及子logger只会使用当前logger的appender。
        这里的"com.smart","com.smart.logback" logger都不会使用root logger的appender,也不会使用其他logger的appender,
        只会使用"com.smart" logger的appender
    -->
    <logger name="com.smart" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="com.smart.logback">
    </logger>
</configuration>
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐