第一步:在项目的resource下方添加logback-spring.xml文件,文件内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!--scan=true:配置文件如果发生改变,将会被重新加载,默认值为true
    scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
    当scan=true时,此属性生效。默认时间间隔为1分钟。
    debug:当此属性设置为true时,将打印出logback内部日志信息;实时查看logback运行状态,默认值为false。
-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>${HOSTNAME}</contextName>
    <property name="LOG_PATH" value="data/www/logs" />
    <!--    日志的最大历史 30天-->
    <property name="log.maxHistory" value="30"/>
    <springProperty scope="context" name="appName" source="spring.application.name" />
    <springProperty scope="context" name="ip" source="spring.cloud.client.ipAddress" />
    <property name="CONSOLE_LOG_PATTERN"
              value="[%d{yyyy-MM-dd HH:mm:ss.SSS} ${ip} ${appName} %highlight(%-5level) %yellow(%X{X-B3-TraceId}),%green(%X{X-B3-SpanId}),%blue(%X{X-B3-ParentSpanId}) %yellow(%thread) %green(%logger) %msg%n"/>

    <!--输出格式-->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %d{yyyy/MM/dd-HH:mm:ss} %level [%thread] %caller{1} - %msg%n
            </pattern>
        </layout>
    </appender>
    <appender name="p6spyConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %msg%n
            </pattern>
        </layout>
    </appender>
    <appender name="p6spyFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>logs/item-service-p6spy.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <!--输出error文件-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>logs/item-service-error.%d.log</fileNamePattern>
            <!--日志文件保留天数  30天-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!--输出info文件-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--过滤error日志-->
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>logs/item-service-info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--日志文件保留天数  30天-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <appender name="addIntegralLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>
                %d{yyyy/MM/dd-HH:mm:ss} %level [%thread] %caller{1} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <!--关闭钉钉日志打印-->
    <logger name="DING_OPEN_CLIENT_SDK_LOGGER" level="WARN"/>

    <logger name="p6spy" level="INFO" additivity="false">
        <appender-ref ref="p6spyConsoleAppender"/>
        <appender-ref ref="p6spyFileAppender"/>
    </logger>

    <logger name="com.xxl.job.core" level="WARN" />

    <!--全局应用该日志配置-->
    <root level="info">
        <appender-ref ref="consoleLog"/>
        <appender-ref ref="fileErrorLog"/>
        <appender-ref ref="fileInfoLog"/>
    </root>


</configuration>

第二步:在程序中引用Logback

Springboot项目logback日志的配置_----【SpringBoot】

第三步:运行程序,可以获取下面的日志输出

Springboot项目logback日志的配置_----【SpringBoot】_02

会在项目中生成log日志文件,生成的日志文件输出的路径和文件命名都可以在logback配置文件中配置

Springboot项目logback日志的配置_spring_03

注解方式使用Slf4j

如果不想每次都写   private final static Logger logger = LoggerFactory.getLogger(BrandController.class);  可以在类前使用注解

@Slf4j,然后直接使用log.info去打印日志。如果注解@Slf4j注入后找不到变量log,那就给IDE安装lombok插件。这种方式和上面提到的打日志的方式最后的结果是一模一样滴!

pom.xml中添加lombok依赖:

       <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.0</version>
        </dependency>

Springboot项目logback日志的配置_----【SpringBoot】_04