3.5 指定日志文件和日志Profile功能
给类路径下放上每个日志框架自己的配置文件即可;SpringBoot就不使用默认的配置了
Logging System | Customization |
---|---|
Logback |
|
Log4j2 |
|
JDK (Java Util Logging) |
|
例如:logback.xml
<property name="appName" value="atguigu-springboot"></property>
<!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 -->
<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">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}------> [%thread]------> %-5level %logger{50} - %msg%n</pattern>
</layout>
</appender>
高级特性--SpringProfile:
logback.xml:直接被日志框架识别
logback-spring.xml:日志框架就不直接加载,由SpringBoot加载,可以使用高级功能SpringProfile标签
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
<!-- 可以指定某段配置只在某个环境下生效 -->
</springProfile>
否则,若文件名为logback.xml且使用SpringProfile功能,则报错:
no applicable action for [springProfile], current ElementPath is [[configuration][appender][layout][springProfile]]
示例:
<layout class="ch.qos.logback.classic.PatternLayout">
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
<!-- 该段配置只在staging环境下生效 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} (((> [%thread] )))> %-5level %logger{50} - %msg%n</pattern>
</springProfile>
<springProfile name="!staging">
<!-- configuration to be enabled when the "staging" profile is active -->
<!-- 该段配置在除staging环境下生效 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} === [%thread] === %-5level %logger{50} - %msg%n</pattern>
</springProfile>
</layout>
</appender>
激活staging环境:spring.profiles.active=staging
3.6 切换日志框架
可以按照slf4j的日志适配图,进行相关的切换;
1.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>
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>
3.log4j.properties
### set log levels ###
log4j.rootLogger = debug , stdout , D , E
### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
#### 输出到日志文件 ###
#log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.D.File = logs/log.log
#log4j.appender.D.Append = true
#log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志
#log4j.appender.D.layout = org.apache.log4j.PatternLayout
#log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
#
#### 保存异常信息到单独文件 ###
#log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.D.File = logs/error.log ## 异常日志文件名
#log4j.appender.D.Append = true
#log4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
#log4j.appender.D.layout = org.apache.log4j.PatternLayout
#log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n