美文网首页
SpringBoot学习随笔记录2(日志Logback)

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

作者: 刚刚8888 | 来源:发表于2019-04-04 14:55 被阅读0次

    日志框架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>
    

    相关文章

      网友评论

          本文标题:SpringBoot学习随笔记录2(日志Logback)

          本文链接:https://www.haomeiwen.com/subject/blpzbqtx.html