关键词:
1.市面上的日志框架;
JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....
2.
日志门面: SLF4J;
日志实现:Logback;
SpringBoot:底层是Spring框架,Spring框架默认是用JCL;‘
SpringBoot选用 SLF4j和logback;
3.SLF4j使用
3.1如何在系统中使用SLF4j https://www.slf4j.org
以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;
给系统里面导入slf4j的jar和 logback的实现jar
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"); } }
理想使用情况:
3.2但是,当使用框架时,各框架有自己使用的日志框架,因此需要下述处理方式:
如何让系统中所有的日志都统一到slf4j;
a、将系统中其他日志框架先排除出去;
b、用中间包来替换原有的日志框架;
c、我们导入slf4j其他的实现
案例1:slf4j+logback
案例二:slf4j+log4j
4.SpringBoot使用它来做日志功能
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐logging</artifactId> </dependency>
4.1底层依赖关系
4.2总结:
1)、SpringBoot底层也是使用slf4j+logback的方式进行日志记录
2)、SpringBoot也把其他的日志都替换成了slf4j;
3)、中间替换包?
@SuppressWarnings("rawtypes") public abstract class LogFactory { static String UNSUPPORTED_OPERATION_IN_JCL_OVER_SLF4J = "http://www.slf4j.org/codes.html#unsupported_operation_in_jcl_over_slf4j"; static LogFactory logFactory = new SLF4JLogFactory(); }
4)、如果我们要引入其他框架?一定要把这个框架的默认日志依赖移除掉?
以排除Spring默认日志框架为例,Spring框架用的是commons-logging;
<dependency> <groupId>org.springframework</groupId> <artifactId>spring‐core</artifactId> <exclusions> <exclusion> <groupId>commons‐logging</groupId> <artifactId>commons‐logging</artifactId> </exclusion> </exclusions> </dependency>
SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可;
5.使用日志
package com.zy.log; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorldLog { // 记录器 Logger logger = LoggerFactory.getLogger(getClass()); @Test public void fn(){ //日志的级别; //由低到高 trace<debug<info<warn<error //可以调整输出的日志级别;日志就只会在这个级别以以后的高级别生效 logger.trace("这是trace日志..."); logger.debug("这是debug日志..."); //SpringBoot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root级别 logger.info("这是info日志..."); logger.warn("这是warn日志..."); logger.error("这是error日志..."); } }
日志输出格式: %d表示日期时间, %thread表示线程名, %‐5level:级别从左显示5个字符宽度 %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 %msg:日志消息, %n是换行符 %d{yyyy‐MM‐dd HH:mm:ss.SSS} [%thread] %‐5level %logger{50} ‐ %msg%n
SpringBoot修改日志的默认配置(application.properties)
logging.level.com.zy=trace # 不指定路径在当前项目下生成springboot.log日志 #logging.path= # 可以指定完整的路径; #logging.file=F:/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
指定配置:
<springProfile name="staging"> <!‐‐ configuration to be enabled when the "staging" profile is active ‐‐> 可以指定某段配置只在某个环境下生效 </springProfile>
例如:
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <!‐‐ 日志输出格式: %d表示日期时间, %thread表示线程名, %‐5level:级别从左显示5个字符宽度 %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 %msg:日志消息, %n是换行符 ‐‐> <layout class="ch.qos.logback.classic.PatternLayout"> <springProfile name="dev"> <pattern> %d{yyyy‐MM‐dd HH:mm:ss.SSS} ‐‐‐‐> [%thread] ‐‐‐> %‐5level %logger{50} ‐ %msg%n </pattern> </springProfile> <springProfile name="!dev"> <pattern> %d{yyyy‐MM‐dd HH:mm:ss.SSS} ==== [%thread] ==== %‐5level %logger{50} ‐ %msg%n </pattern> </springProfile> </layout> </appender>
如果使用logback.xml作为日志配置文件,还要使用profile功能,会有以下错误
no applicable action for [springProfile]
6.切换日志框架 方法
6.1可以按照slf4j的日志适配图,进行相关的切换;
slf4j+log4j的方式;
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐web</artifactId> <exclusions> <exclusion> <artifactId>logback‐classic</artifactId> <groupId>ch.qos.logback</groupId> </exclusion> <exclusion> <artifactId>log4j‐over‐slf4j</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j‐log4j12</artifactId> </dependency>
6.2切换为log4j2
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐web</artifactId> <exclusions> <exclusion> <artifactId>spring‐boot‐starter‐logging</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐log4j2</artifactId> </dependency>
springboot.06.springboot日志管理(代码片段)
SpringBoot.06.SpringBoot日志管理SpringBoot日志介绍概念日志的级别日志的分类SpringBoot日志基本使用1.新建Module2.项目配置3.配置日志SpringBoot日志切割1.application.yml2.application-dev.yml3.logback-dev.xml4.测试SpringBoot日志介绍概念在SpringBoot框架中... 查看详情
springboot统一日志管理
Springboot中统一日志管理一、为什么要用日志?一般分为两个大类:操作日志和系统日志**操作日志:**用户在操作软件时记录下来的操作步骤,便于用户自己查看。主要针对的是用户。**系统日志:**系统日志是记录系统中硬件、... 查看详情
九,springboot-日志管理(logback)
一,SpringBoot日志级别springboot默认使用的日志框架是LogBack,默认INFO级别。日志依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-l 查看详情
springboot添加日志管理(代码片段)
一。近期自己的项目想要一个记录日志的功能,而springboot本身就内置了日志功能,然而想要输入想要的日志,并且输出到磁盘,然后按天归档,或者日志的切分什么的,自带的日志仅仅具有简单的功能,百度了一番,总结如下... 查看详情
springboot中的日志管理
本案例中可以了解,怎么配置日志的输出路径,输出格式(比如说zip格式),按日期进行划分(今天的日志输出为一个文件,明天的日志输出到另一个文件),在按日期划分的同时又按文件大小划分(比如说每天的日志记录很多... 查看详情
日志管理,springboot
...og4j、log4j2、slf4j....2.日志门面:SLF4J;日志实现:Logback;SpringBoot:底层是Spring框架,Spring框架默认是用JCL;‘SpringBoot选用SLF4j和logback;3.SLF4j使用3.1如何在系统中使用SLF4j https://www.slf4j. 查看详情
springboot:logback日志管理
Springboot默认使用的日志框架就是logback创建自定义的logback-spring.xml放在resources类目录下即可logback-spring.xml:<?xmlversion="1.0"encoding="UTF-8"?><!--日志级别从低到高分为TRACE<DEBUG<INFO<WARN< 查看详情
springboot入门:集成aop进行日志管理
本篇文章是接着Springboot入门(四):集成Shiro实现登陆认证和权限管理写的,按照前面几篇博客的教程,可以搭建一个简单的项目,主要包含了Pagehelper+MyBatis分页查询,Generator代码自动生成器,Shiro登录及权限管理。本篇博客主要... 查看详情
springboot整合aop日志管理(代码片段)
1.开发前准备1.1前置知识java基础自定义注解、反射SpringaopSpringBoot简单基础知识即可1.2环境参数开发工具:IDEA基础环境:Maven+JDK8所用技术:SpringBoot、lombok、mybatisplus、SpringaopSpringBoot版本:2.1.41.3涉及知识点自定义注解、反射spring... 查看详情
springboot日志/页面处理实体类构建后台管理(代码片段)
springboot日志/页面处理、实体类构建、后台管理一、配置文件的编写1.配置文件2.导入依赖二、日志框架处理1.默认配置2.个性配置3.自动生成的日志文件三、页面处理1.控制器2.配置错误友好页面四、实体类构建1.创建持久层实体类... 查看详情
springboot全局日志管理(aop)
1、在pom.xml中引入aop的jar包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>2、创建WebLogAspect类packagecom 查看详情
springboot动态日志管理(actuator)
参考技术A引入依赖配置文件添加management.endpoints.web.exposure.include=loggers之后访问http://localhost:8080/xxx/actuator/loggers即可看到每个文件的日志级别查看某个目录的日志级别http://localhost:8080/xxx/actuator/loggers](http://localhost:8080/rose-server/actu... 查看详情
springboot项目中使用logback进行日志管理
Logback简介logback是由log4j创始人设计的又一个开源日志组件,优化了log4j存在的性能问题。logback包含了三个模块:logback-core、logback-classic、logback-access。logback-core 是其它模块的基础设施,其它模块基于它构建,显然,logback-core... 查看详情
springboot日志管理配置logback-spring.xml
几种常见的日志Log4j:是最早的日志框架,是apach旗下的,可以单独使用,也可配合日志框架JCL使用;Log4j2:apach旗下的关于log4j的升级版;Logback:是基于slf4j接口实现的一套日志框架组件;(Logback是由log4j创始人设计的又一个开... 查看详情
重学springboot系列之日志框架与全局日志管理(代码片段)
重学SpringBoot系列之日志框架与全局日志管理日志框架的体系结构五花八门的日志工具包日志框架日志门面日志门面存在的意义日志框架选型日志级别常见术语概念解析logback日志框架配置application配置文件实现日志配置日志格式... 查看详情
springboot2.0+vue脚手架项目源码,中小型管理系统开发神器。
...闭、统一异常处理等技术特点。后台技术架构基于最新的SpringBoot2.0、MyBatis、Shiro、Element2.0+框架,开发的一套权限系统,极低门槛 查看详情
springboot2.0+vue脚手架项目源码,中小型管理系统开发神器。
...闭、统一异常处理等技术特点。后台技术架构基于最新的SpringBoot2.0、MyBatis、Shiro、Element2.0+框架,开发的一套权限系统,极低门槛 查看详情
springboot2中的默认日志管理与logback配置详解(代码片段)
SpringBoot在所有内部日志中使用CommonsLogging,但是对底层日志的实现是开放的。在SpringBoot生态中,为JavaUtilLogging、Log4J2和Logback这些常见的日志框架都提供了自动化配置组件,每种Logger都可以通过配置在控制台或者文件... 查看详情