学习在IDEA中使⽤SpringBoot(三)SpringBoot与⽇志1. ⽇志框架
市⾯上的⽇志框架 :
JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…
左边选⼀个门⾯(抽象层),右边选⼀个实现
⽇志门⾯:SLF4J
⽇志实现:Logback
SpringBoot选⽤ SLF4j和logback
2. SLF4j使⽤
1. 如何在系统中使⽤SLF4J
idea debug
以后开发的时候,⽇志记录⽅法的调⽤,不应该来直接调⽤⽇志的实现类,⽽是调⽤⽇志抽象层⾥⾯的⽅法;
给系统⾥⾯导⼊slf4j的jar和 logback的实现jar
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = Logger(HelloWorld.class);
logger.info("Hello World");
}
}
每⼀个⽇志的实现框架都有⾃⼰的配置⽂件。使⽤slf4j以后,配置⽂件还是做成⽇志实现框架⾃⼰本⾝的配置⽂
件,图⽰:
2. 遗留问题
a(slf4j+logback): Spring(commons-logging)、Hibernate(jboss-logging)、MyBatis、xxxx 统⼀⽇志记录,即使是别的框架和我⼀起统⼀使⽤slf4j进⾏输出?
如何让系统中所有的⽇志都统⼀到slf4j:
1.将系统中其它⽇志框架先排除出去
2. ⽤中间包来替换原有的⽇志框架
3. 导⼊slf4j其它的实现
3. Spring Boot ⽇志关系
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter</artifactId>
</dependency>
SpringBoot使⽤它来做⽇志功能:
dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐logging</artifactId>
</dependency>
底层依赖关系:
总结:
1. SpringBoot底层也是使⽤slf4j+logback的⽅式进⾏⽇志记录
2. SpringBoot也把其他的⽇志都替换成了slf4j;
3. 中间替换包
@SuppressWarnings("rawtypes")
public abstract class LogFactory {
static String UNSUPPORTED_OPERATION_IN_JCL_OVER_SLF4J =
"/codes.html#unsupported_operation_in_jcl_over_slf4j";
static LogFactory logFactory = new SLF4JLogFactory();
4. 如果我们要引⼊其他框架,⼀定要把这个框架的默认⽇志依赖移除掉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的⽅式记录⽇志,引⼊其他框架的时候,只需要把这个框架依赖的⽇志框架排除掉即可
4. ⽇志使⽤
1.默认配置
SpringBoot默认帮我们配置好了⽇志,我们可以创建类:
Logger logger = Logger(getClass());
@Test
public void contextLoads() {
//System.out.println();
//⽇志的级别;
//由低到⾼  trace<debug<info<warn<error
//可以调整输出的⽇志级别;⽇志就只会在这个级别以以后的⾼级别⽣效
logger.debug("这是debug⽇志...");
//SpringBoot默认给我们使⽤的是info级别的,没有指定级别的就⽤SpringBoot默认规定的级别;root
级别
logger.info("这是info⽇志...");
logger.warn("这是warn⽇志...");
<("这是error⽇志...");
}
输出如下:
通过修改application.properties属性可以进⾏修改:
#指定⽇志输出级别
logging.level.itcast=trace
#指定⽣成⽇志并保存的路径
#logging.file=G:/spring.log
#在当前磁盘的根路径下创建spring⽂件夹和⾥⾯的log⽂件夹,使⽤spring.log作为默认⽂件
#会在根路径D盘⽣成
logging.path=/spring/log
#在控制台输出的⽇志
sole=%d{yyyy‐MM‐dd HH:mm:ss.SSS} [%thread] %‐5level %logger{50} ‐ %msg%n
#指定⽂件中⽇志输出的格式
logging.pattern.file=%d{yyyy‐MM‐dd HH:mm:ss.SSS}  === [%thread] === %‐5level === %logger{50} === %msg%n
⽇志输出格式:
%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修改⽇志的默认配置
logging.level.atguigu=trace
#logging.path=
# 不指定路径在当前项⽬下⽣成springboot.log⽇志
# 可以指定完整的路径;
#logging.file=G:/springboot.log
# 在当前磁盘的根路径下创建spring⽂件夹和⾥⾯的log⽂件夹;使⽤ spring.log 作为默认⽂件
logging.path=/spring/log
#  在控制台输出的⽇志的格式
sole=%d{yyyy‐MM‐dd} [%thread] %‐5level %logger{50} ‐ %msg%n
# 指定⽂件中⽇志输出的格式
logging.pattern.file=%d{yyyy‐MM‐dd} === [%thread] === %‐5level === %logger{50} ==== %msg%n
2. 指定配置
给类路径下放上每个⽇志框架⾃⼰的配置⽂件即可;SpringBoot就不使⽤他默认配置的了
<springProfile name="staging">
<!‐‐ configuration to be enabled when the "staging" profile is active ‐‐>
可以指定某段配置只在某个环境下⽣效
</springProfile>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。