SpringBoot日志认识与配置

日志作为逻辑跟踪、线上问题排查、监控报警的有效基础利器被开发人员所熟知。
日志框架有两个比较常用的,一个是jdk自带的java.util.logging,俗称jul;另一个是log4j,是Ceki Gülcü捐给apache的产品

1、jul

        它不需要加载依赖,因为他是jdk自带的,用法如下    

import java.util.logging.Logger;
public class julMain {
    public static void main(String[] args){
        Logger log = Logger.getLogger(julMain.class.getName());//参数是当前类的名称.class.getName
        log.info("我是jul");
    }
}

2、log4j

        需要加载依赖

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>-

        使用方式和jul大致相同

import org.apache.log4j.Logger;
public class log4jMain {
    public static void main(String[] args){
        Logger logger=Logger.getLogger(log4jMain.class);
        logger.info("我是log4j");
}

注:要求记录日志不能直接使用日志框架,需要使用日志门面

但是后来要求记录日志不能直接使用日志框架,需要使用日志门面,日志门面不实现日志功能,它仅仅是整合日志,提供日志接口;流行的两个日志门面是JCL(Jakarta Commons Logging由apache开发);slf4j(由Ceki Gülcü离开apache后开发)。

3、jcl

        依赖

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

        实现 

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class julMain {
    public static void main(String[] args){
        Log log= LogFactory.getLog(julMain.class);
    }
}

4、slf4j

        依赖

 <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>2.0.9</version>
</dependency>

        实现

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class log4jMain {
    public static void main(String[] args){
        Logger logger= LoggerFactory.getLogger(log4jMain.class);
    }
}

如果相同时使用两个门面,那就需要用到桥接器,引入 jcl-over-slf4j依赖即可

如今有了SpringBoot,它整合了一套日志体系

使用logback日志框架,slf4j日志门面,使用logback-classic桥接器,使用log4j-to-slf4j、jul-to-slf4j适配器。

如此,只需要创建一个spring boot的项目即可使用日志,不需要再引入任何依赖

日志级别:

trace(跟踪)<debug(调试)<info(信息)<warn(警告)<error(异常)<fatal<off

设置级别低的会输出所有高级别的日志,比如我设置日志级别为warn,那么error、fatal、off就会被记录。

spring boot默认的日志级别是info

启动springboot项目时会显示

如果需要修改日志级别就再application.yml配置文件里写入相关配置

logging:
  level:
    root: debug

 局部修改日志级别

logging:
  level:
#你的包的路径名称
    com:
      tx:
        springboot_test: info

springboot日志输出介绍

Spring Boot 的默认日志输出类似于以下示例:

 

输出以下项目:

  • 日期和时间:毫秒级精度,易于排序。%clr(%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}){faint}

  • %clr( ){faint}设置颜色如%clr( ){yellow}

  • 日志级别

  • 进程 ID。

  • 用于区分实际日志消息开头的分隔符。---

  • 应用程序名称:用方括号括起来(默认情况下仅在设置时记录)spring.application.name

  • 线程名称:用方括号括起来(控制台输出可能会被截断)。

  • 相关 ID:如果启用了跟踪(上面的示例中未显示)

  • 记录器名称:这通常是源类名称(通常缩写)。

  • 日志消息

参考:https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.logging.log-format

将日志以文件的形式输出:

name: 路径+文件名,如果只定义了文件名,那他的日志文件会在项目目录中,

path: 路经,path只能定义路径不能定义文件名,且如果定义了上面的name,path的路径也不会起作用,path定义路径后,会在定义的路径下生成名为spring.log的文件

logging:
  file:
    name: D:/spring.log     #路径+文件名
    # path: D:/            #路径

总结:

logging:
  file:
    #输出日志文件的路径名称
    name: D:/log/tongxin.log
    level:
      #设置项目的日志级别为info
      root: info
      #设置再com.tx.springboot_test包下面的日志级别为debug
      com:
        tx:
          springboot_test: debug
  logback:
    rollingpolicy:
      #设置如果日志文件超过5kb就存档为${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz,${LOG_FILE}就是设置的file.name
      file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
      max-file-size: 5KB
  pattern:
    #控制台输出格式
    console: "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss}}){green} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"
    #文件输出格式
    file: "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss}}){green} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"

  • 42
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值