Springboot联结万物学习笔记--Springboot微服务基础搭建篇-- SpringBoot中日志的使用
Posted woniurunfast
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot联结万物学习笔记--Springboot微服务基础搭建篇-- SpringBoot中日志的使用相关的知识,希望对你有一定的参考价值。
博客说明:撰写博客目的是在记录自己所学知识、在工作中使用技术遇到的技术问题、一些技术感悟,因此避免不了涉及到和其他文章有相似之处。本文从作者自己的实践中指出相关踩坑问题,着重指出学习过程中遇到的相关问题。如果存在相关侵权问题请联系博主删除,同时有技术上的见解可以在评论去里发出,会不定期回复,谢谢。
gitee地址:https://gitee.com/woniurunfast/springbootwitheverything
01目标
1、学会springboot几种日志的使用
2、了解日志的输出模式
3、自定义日志
02日志相关知识点
(1) 在springboot的底层日志结构主要依赖了三个框架分别是:
- slf4j
- logback
- log4j
(2)slf4j、logback和log4j三者的关系
1、logback和log4j是日志实现框架,就是实现怎么记录日志的。
2、slf4j:提供了java所有的日志框架的简单抽象(使用了日志的门面设计模式),说白了就是一个日志API(没有实现类
), 它不能单独使用,必须要结logback和log4j日志框架来实现结合使用。
3、springboot的日志搭配
springboot2.x以后默认采用了:slf4j+logback的日志搭配。
4、日志级别
顺序是:trace>debug>info>warn>error
02基本日志使用方法
(1)基本使用:
package com.hkx.demo.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/log")
public class LogController {
/**
* 日志使用第一种方式
*/
private static final Logger log = LoggerFactory.getLogger(LogController.class);
@GetMapping("/info")
public void console(){
log.trace("----------trace--------");
log.debug("----------debug--------");
log.info("----------info--------");
log.warn("----------warn--------");
log.error("----------error--------");
}
}
(2) lombok优化日志的定义使用方法
package com.hkx.demo.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* lombok优化日志的定义
* 日志使用的第二种方式
*/
@Service
@Slf4j
public class LogService {
public void logTest() {
try {
System.out.println(1/0);
log.info("hhhhh");
log.info("kkkkk");
} catch (Exception ex) {
log.error("error");
}
}
}
(3)日志级别的控制
指定日志级别 把springboot的所有日志修改成为info
在application.yml添加
logging:
level:
root: info
所有日志info级别的会被打印
03日志输出文件和日志格式
1、日志输出文件:
日志输出文件:默认情况下关闭。
(1)项目发布制定日志输出的文件
nohup java -jar xxxx.jar >>log.txt &
(2)在配置文件上定义
logging:
level:
root: info
file:
# 如果不想把日志存放在logging.file.path目录下,可以采用name来重新定义存储的位置和日志文件的名称
name: F:/woniurunfast_java/www/logs/woniu.log
pattern:
# file 是指日志文件中日志的格式
file: "【KuangStudy-file】%d{yyyy/MM/dd-HH:mm:ss} -- [%thread] %-5level %logger{50} -- %M - %msg%n"
运行后生成:
2、日志格式(太多内容了,大家自己探索吧)
%c 输出logger名称
%C 输出类名
%d{HH:mm:ss.SSS} 表示输出到毫秒的时间
%t 输出当前线程名称
%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
%logger 输出logger名称,因为Root Logger没有名称,所以没有输出
%msg 日志文本
%n 换行
其他常用的占位符有:
%F 输出所在的类文件名,如Log4j2Test.java
%L 输出行号
%M或%method 输出所在方法名
%l 输出完整的错误位置, 包括类名、方法名、文件名、行数
%p 该条日志的优先级
%replace{pattern}{regex}{substitution} 将pattern的输出结果pattern按照正则表达式regex替换成substitution
04 自定义logback.xml
引入logback.xml文件,项目启动时候会自动读取该文件日志的设置
配置的东西太多,具体可通过我的gitee下载下来查看
以上是关于Springboot联结万物学习笔记--Springboot微服务基础搭建篇-- SpringBoot中日志的使用的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot学习笔记——Spring Boot与ActiveMQ的集成