• SpringBoot之SpringBoot整合logback


    SpringBoot之SpringBoot整合logback

    添加Maven依赖

      logback的依赖不需要单独添加,在添加web场景启动器的时候已经通过依赖传递,导入了

      

    开始配置

    在resource下新建log文件夹,并且在其中创建logback.xml

     logback.xml

    <configuration>
        <!--本文主要输出日志为控制台日志,系统日志,sql日志,异常日志-->
        <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, -->
        <!--控制台-->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d %p (%file:%line)- %m%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
        </appender>
    
        <!--系统info级别日志-->
        <!--<File> 日志目录,没有会自动创建-->
        <!--<rollingPolicy>日志策略,每天简历一个日志文件,或者当天日志文件超过64MB时-->
        <!--encoder 日志编码及输出格式-->
        <appender name="fileLog"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <File>log/file/fileLog.log</File>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>log/file/fileLog.log.%d.%i</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <!-- or whenever the file size reaches 64 MB -->
                    <maxFileSize>64 MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder>
                <pattern>
                    %d %p (%file:%line)- %m%n
                </pattern>
                <charset>UTF-8</charset>
                <!-- 此处设置字符集 -->
            </encoder>
        </appender>
    
        <!--sql日志-->
        <appender name="sqlFile"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <File>log/sql/sqlFile.log</File>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>log/sql/sqlFile.log.%d.%i</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <!-- or whenever the file size reaches 64 MB -->
                    <maxFileSize>64 MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <!--对记录事件进行格式化。负责两件事,一是把日志信息转换成字节数组,二是把字节数组写入到输出流。-->
            <encoder>
                <!--用来设置日志的输入格式-->
                <pattern>
                    %d %p (%file:%line)- %m%n
                </pattern>
                <charset>UTF-8</charset>
                <!-- 此处设置字符集 -->
            </encoder>
        </appender>
    
    
        <!--异常日志-->
        <appender name="errorFile"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <File>log/error/errorFile.log</File>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>log/error/errorFile.%d.log.%i</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <!-- or whenever the file size reaches 64 MB -->
                    <maxFileSize>64 MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <!--对记录事件进行格式化。负责两件事,一是把日志信息转换成字节数组,二是把字节数组写入到输出流。-->
            <encoder>
                <!--用来设置日志的输入格式-->
                <pattern>
                    %d %p (%file:%line)- %m%n
                </pattern>
                <charset>UTF-8</charset>
                <!-- 此处设置字符集 -->
            </encoder>
            <!--
                日志都在这里 过滤出 error
                使用 try {}catch (Exception e){} 的话异常无法写入日志,可以在catch里用logger.error()方法手动写入日志
                -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <!--  日志输出级别 -->
        <!--AllDEBUGINFOWARNERRORFATALOFF-->
        <!--打印info级别日志,分别在控制台,fileLog,errorFile输出
            异常日志在上面由过滤器过滤出ERROR日志打印
        -->
        <root level="INFO">
            <appender-ref ref="fileLog" />
            <appender-ref ref="console" />
            <appender-ref ref="errorFile" />
        </root>
    
        <!--打印sql至sqlFile文件日志-->
        <logger name="com.springboot.demo.mapper" level="DEBUG" additivity="false">
            <appender-ref ref="console" />
            <appender-ref ref="sqlFile" />
        </logger>
    </configuration>

    添加配置在application.yml

    logging:
      # 设置logback.xml位置
      config: classpath:log/logback.xml

    编写代码

      在服务类上添加@Slf4j

    这个注解是lombok的,所以在使用的时候需要先集成lombok,如果不知道如何集成的小伙伴可以看一下我的《SpringBoot之SpringBoot整合lombok

    在方法中就可以直接使用log日志对象了

     大括号代表传入参数的意思,log.info方法的第二个参数是不定长参数可以无限传入,但是建议不到太多

    启动项目测试:

    访问成功

    看一下控制台

     成功打印

    本来我以为是在resource/log下 创建那三个文件夹并存放日志文件呢,找了半天没找到,后来 发现 logback是在项目的根路劲下创建了文件夹和文件,并存入了日志

     比如我刚才访问的地址输出的 彼岸舞 也存放到了里面,接下来 我访问一下Mapper中的方法

    访问的时候报错了

    那么看一下,有没有记录到error中呢

     记录了,其实fileLog.log中也是有记录的,为什么会报错呢,因为之前我把数据库连接改了,导致连接的数据库不对,改回来重新启动测试

     访问成功,查看一下日志,但是我发现他并没有往日志中记录Sql的日志,为什么呢?我丢...找了半天发现集成的东西太多了,走的是jdbcTemplate的代码,没有走mybatis的所以没有打印

    重新访问user2接口

     查看日志

     可以看到日志已经被添加到sqlFile.sql中

    作者:彼岸舞

    时间:2021126

    内容关于:SpringBoot

    本文来源于网络,只做技术分享,一概不负任何责任

  • 相关阅读:
    哔哩哔哩小视频全栈爬取分析
    Python压缩指定文件及文件夹为zip
    python对字典及列表递归排序
    Python对list列表及子列表进行排序
    揭开yield关键字的神秘面纱
    python 发送email邮件带附件
    ElementNotVisibleException: Message: element not visible
    /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.22) or chardet (2.2.1) doesn't match a supported version!
    selenium元素单击不稳定解决方法
    selenium自定义find_element
  • 原文地址:https://www.cnblogs.com/flower-dance/p/14330442.html
Copyright © 2020-2023  润新知