SpringBoot学习随笔记录2(日志Logback)

2019-04-04  本文已影响0人  刚刚8888

日志框架Logback
日志框架就是能实现日志输出的工具包。
能力:
1.定制输出目标
2.定制输出格式
3.携带上下文信息
4.运行时选择性输出
5.灵活的配置
6.优异的性能

常用日志框架:JUL、JCL、Log4j、Log4j2、Logback、SLF4j、jboss-logging
框架关系:
日志门面 : JCL 、 SLF4j 、 jboss-logging
日志实现 : Log4j 、Log4j2 、Logback 、JUL

框架选择:
JUL来自官方,但太简陋
jboss-logging不适合大众开发
SLF4j、Log4j、Logback是一个作者,Logback为作者推荐
Log4j2太先进,开源框架支撑少,性能太高
SLF4j、Logback是同一个作者,所以不使用JCL

日志要点:
1.日志写法技巧

//普通日志输出写法
package com.gang.sell.imooc;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class LoggerTest {

    private  final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

    @Test
    public void test1() {

        logger.debug("debug...");
        logger.info("info....");
        logger.error("error...");
    }
}

使用注解@Slf4j方便日志,需要在pom.xml加入工具包


WechatIMG1.jpeg
package com.gang.sell.imooc;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LoggerTest {

    @Test
    public void test1() {

        log.debug("debug...");
        log.info("info....");
        log.error("error...");

    }
}

代码这样,能跑,但是log没提示呀,暂保持疑问

Logback配置:
两种:application.properties (配置内容少, xx/src/main/resources/) 和logback-spring.xml (配置内容更多)

application.properties配置:

logging.pattern.console=%d - %msg%n  
logging.path=/Users/ganggang/Desktop/sell/logtest
logging.file=/Users/ganggang/Desktop/sell/logtest/sell.log
logging.pattern.level=debug

logging.pattern.console设置日志格式,%d为日期, %msg为日志信息,%n为换行
logging.path 设置日志文件路径,随便写的路径…o,注意路径中没有的文件夹不会自动创建
logging.file设置日志文件,会创建对应文件名日志文件
logging.path和logging.file作用一样,logging.file多了个可以配置文件名,写一个就行
logging.pattern.level设置日志级别,默认为info, 可以指定某个类为某个级别,如,logging.pattern.level= com.gang.sell.imooc.LoggerTest debug

logback-spring.xml 实例配置:
区分info和error日志
每天产生一个日志文件
缺点:没有提示,需要注意单词拼写

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

<!--    //一个配置项,格式配置-->
    <!--        //appender表示小配置项-->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
    <!--  //ch.qos.logback.core.ConsoleAppender为logback类路径 ,配置项需要用到此类去处理-->

        <!--   //展示配置,因为此处为控制台输出,所以用layout-->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
            <!--  具体格式-->
                %d - %msg%n
            </pattern>
        </layout>
    </appender>

    <!-- Info每天输出日志配置-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--过滤配置,根据范围过滤-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- LevelFilter会过滤掉ERROR级别日志  -->
            <level>ERROR</level>
            <!--如果匹配则禁止-->
            <onMatch>DENY</onMatch>
            <!--如果不匹配则接受,NEUTRAL:代表忽略,跳过-->
            <onMismatch>ACCEPT</onMismatch>
        </filter>

        <!--   编码格式配置,因为此处为文件所以用encoder-->
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>

        <!-- 滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--TimeBasedRollingPolicy配置 每天一个日志文件-->
            <!-- 路径-->
            <fileNamePattern>
                /Users/ganggang/Desktop/sell/logtest/info.%d.log
            </fileNamePattern>
        </rollingPolicy>
    </appender>

    <!-- error每天输出日志配置-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--过滤配置,根据范围过滤-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- 会打印出ERROR级别以上的日志  -->
            <level>ERROR</level>
        </filter>

        <!--   编码格式配置,因为此处为文件所以用encoder-->
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>

        <!-- 滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--TimeBasedRollingPolicy配置 每天一个日志文件-->
            <!-- 路径-->
            <fileNamePattern>
                /Users/ganggang/Desktop/sell/logtest/error.%d.log
            </fileNamePattern>
        </rollingPolicy>
    </appender>

    <!-- //配置项作用域,level为info,表示info级别以上的日志会被输出-->
    <root level="info">
        <!--        //配置项名-->
        <appender-ref ref="consoleLog" />
        <appender-ref ref="fileInfoLog" />
        <appender-ref ref="fileErrorLog" />
    </root>

</configuration>
上一篇下一篇

猜你喜欢

热点阅读