用什么日志实现,就用这个日志实现的配置;
SpringBoot:选用 SLF4j日志门面和logback日志实现记录日志;能自动适配所有的日志
日志门面: SLF4J (Simple Logging Facade for Java);是所有日志的抽象层
日志实现:Logback;
SpringBoot底层是Spring框架,Spring框架默认是用JCL(Jakarta Commons Logging),这个日志实现会排除掉,用中间包替换指向slf4j
SLF4j使用 :https://www.slf4j.org
日志记录方法是调用日志抽象层里面的方法;
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("Hello World"); } }给系统里面导入slf4j的jar和 logback的实现jar
2、遗留问题:
3、SpringBoot日志关系
org.springframework.boot spring‐boot‐starter‐logging
底层依赖关系:
4)、如果我们要引入其他框架:一定要把这个框架的默认日志依赖移除掉;
Spring框架用的是commons-logging;
org.springframework spring‐corecommons‐logging commons‐logging
SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可;
4、日志使用;
1、默认配置 SpringBoot默认帮我们配置好了日志;
SpringBoot默认给我们使用的是info级别的,日志的级别: trace
SpringBoot在application配置中修改日志的默认配置:
logging.level.com.atguigu=trace
#logging.path=
# 不指定路径在当前项目下生成springboot.log日志
# 可以指定完整的路径;
#logging.file=G:/springboot.log
# 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用 spring.log 作为默认文件 logging.path=/spring/log
# 在控制台输出的日志的格式 logging.pattern.console=%d{yyyy‐MM‐dd} [%thread] %‐5level %logger{50} ‐ %msg%n
# 指定文件中日志输出的格式 logging.pattern.file=%d{yyyy‐MM‐dd} === [%thread] === %‐5level === %logger{50} ==== %msg%n
可以指定某段配置只在某个环境下生效
%d{yyyy‐MM‐dd HH:mm:ss.SSS} ‐‐‐‐> [%thread] ‐‐‐> %‐5level %logger{50} ‐ %msg%n %d{yyyy‐MM‐dd HH:mm:ss.SSS} ==== [%thread] ==== %‐5level %logger{50} ‐ %msg%n
如果使用logback.xml作为日志配置文件,还要使用profile功能,会有以下错误 no applicable action for [springProfile]
logback-spring.xml :可以使用profile功能
【xkcoding】%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n ${user.dir}/logs/log/online-study.%d.log 【xkcoding】%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n ERROR ACCEPT DENY ${user.dir}/logs/error/online-study.%d.error 【xkcoding】%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n
logback DEBUG %d [%thread] %-5level %logger{36} [%file : %line] - %msg%n ${scheduler.manager.server.home}/logs/${app.name}.log ${scheduler.manager.server.home}/logs/${app.name}.%d{yyyy-MM-dd.HH}.log.gz 60 20GB 100MB %d [%thread] %-5level %logger{36} [%file : %line] - %msg%n
5、切换日志框架
切换为log4j2
org.springframework.boot spring‐boot‐starter‐webspring‐boot‐starter‐logging org.springframework.boot org.springframework.boot spring‐boot‐starter‐log4j2



