zoukankan      html  css  js  c++  java
  • SpringBoot中的日志使用:

    SpringBoot中的日志使用(一)

    一:日志简介:

    • 常用的日志接口 commons-logging/slf4j  
    • 日志框架:log4j/logback/log4j2
    • 日志接口屏蔽了日志框架的底层实现,使用时只需引入相关的jar包,当更换日志的实现框架时,只需要修改pom文件或者日志配置文件,无需对代码层进行修改;

    二:springboot使用logback的配置文件

    • application.properties配置:
    • logging.path=/User/jackie/workspace/rome/   日志的保存路径
      logging.file=springbootLog.log             保存文件,注意file和path同时存在时,file生效,保存在根目录下,可以在file中设置路径如/logs/log/test.log
      logging.level.root =warn                    日志的保存级别,级别高于warn的被保存
      logging.level.com.wht.logging.logger01=warn 可以设置某个具体包或者类的日志的保存级别;
      logging.pattern.file=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger :: %msg%n  日志的保存格式  
    •  logging.prattern.file解析:
      %d{HH:mm:ss.SSS}——日志输出时间    
      %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用    	
      %-5level——日志级别,并且使用5个字符靠左对齐    	
      %logger- ——日志输出者的名字    	
      %msg——日志消息    	
      %n——平台的换行符

    三:logback的自定义配置

    • 当我们想使用更高级的日志操作,比如我们希望将不同包下的日志记录到不同的位置,或者只想查看日志中包含否和特定正则的记录,此时需要logback‘的高级配置;

    • SpringBoot中默认使用logback作为日志实现。一般我们构建的springboot项目中包含spring-boot-starter-web,里面已经包含了logback的三个以来jar:

      • logback-core:基础模块;
      • logback-classic:log4j的改良;
      • logback-access:提供通过http访问日志的功能
    • springboot查找logback配置文件的顺序:首先查找logback.groovy,然后logback-test.xml,然后logback.xml文件,都没有使用默认设置;

     

    logback.xml配置:

    配置实例:appender负责具体日志输出。logger负责对相关包或者类进行控制;

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration scan="true" scanPeriod="60 seconds" debug="true"> <!-- 控制台打印日志的相关配置,配置文件修改60s刷新,默认1min,debug=true显示logback内部日志信息 -->
        
    <property name="location" value="./../logs/" /> <!--location表示了value值,在这作为日志的保存位置使用-->
    <!--像控制台输出的日志格式,输出级别为warn以上的日志被打印--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd-HH:mm:ss} [%class:%line] - %m%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>warn</level> </filter> </appender>
    <!--将日志保存到本地,filter设置级别,encoder设置格式,rollingPlicy设置日志滚动方式为基于时间滚动,保存格式为按天保存,最长时间为30天--> <appender name="file1" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <encoder> <pattern>%d{yyyy-MM-dd-HH:mm:ss} [%class:%line] - %m%n</pattern> </encoder> <!--<append>false</append>--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${location}%d{yy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> </appender>
    <!--仍然擦用该输出方式,file设置日志保存地址和日志名字,filter采用正则匹配的方式,
       rollingPolicy策略为固定窗口策略:将日志压缩为如tets.1.log.zip格式放在location位置,其中%i必须带,范围为1-2;
    triggeringPolocy定义了rollingPolicy的触发机制:采用基于文件大小的方式,当日志大于2k时进行压缩;--> <appender name="file2" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${location}service.log</file> <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator > <matcher> <Name>wht</Name> <regex>^[ie]</regex> </matcher> <expression>wht.matches(formattedMessage)</expression> </evaluator> <OnMatch>ACCEPT</OnMatch> <OnMismatch>DENY</OnMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${location}tests.%i.log.zip</fileNamePattern> <minIndex>1</minIndex> <maxIndex>2</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>2kB</maxFileSize> </triggeringPolicy> <encoder> <pattern>%d{yyyy-MM-dd-HH:mm:ss} [%class:%line] - %m%n</pattern> </encoder> </appender>
    <logger定义哪个包使用哪种appender进行日志输出,注意additivity默认不向上层传递,否则日志可能会被打印两遍> <!--<logger name="com.wht.logger02.controller" level="DEBUG" additivity="false">;不向上层传递 <!--<appender-ref ref="file1"></appender-ref>--> <!--</logger>-->
    <logger name="com.wht.logger02.service" level="INFO" additivity="false"> <appender-ref ref="file2"></appender-ref> </logger> <root level="INFO"> <appender-ref ref="STDOUT"></appender-ref> </root> </configuration>

    简单看下file2的日志输出: logging日志下是工程目录,service.log是正在生成的日志,test是已经打包的日志

          

  • 相关阅读:
    寒假要学习的知识点
    Linux firewall防火墙 换成 iptables 防火墙
    git add出现 "fatal: in unpopulated submodule XXX" 错误
    使用navicat连接mysql报10038错时解决方法
    php 获取url重定向
    php 获取文件后缀的几种方法
    Windows+PHP7.3环境下安装imagick扩展和imagemagick
    php7 连接数据库的方法
    Warning from https://mirrors.aliyun.com/composer: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2.
    php 执行GuzzleHttp请求时发生cURL error 60: SSL certificate problem错误的解决方法
  • 原文地址:https://www.cnblogs.com/whtblog/p/10505939.html
Copyright © 2011-2022 走看看