SpringBoot中的日志使用
默认配置
SpringBoot默认已经配置好了日志
@RunWith(SpringRunner.class)
@SpringBootTest
class QueueApplicationTests {
@Test
void contextLoads() {
// System.out.println(person);
//记录器
Logger logger = LoggerFactory.getLogger(getClass());
//日志级别
//由低到高 trace<debug<info<warn<error
//可以调整输出的日志级别,日志就只会在这个级别以后的高级别生效
logger.trace("这是trace日志...");
logger.debug("这是debug日志...");
//SpringBoot默认使用的是info级别的,没有指定级别的就用SpringBoot默认级别的,默认是root级别
logger.info("这是info日志...");
logger.warn("这是warn日志...");
logger.error("这是error日志...");
}
}
没有设置日志级别,展示结果如下:
设置日志级别为trace,测试结果如下:
在application中设置日志级别为trace:
logging.level.com.example.queue=trace
日志的常规设置:
logging.file | logging.path | Example | Description |
---|---|---|---|
(none) | (none) | 只在控制台输出 | |
指定日志文件名 | (none) | my.log | 输出日志到my.log文件 |
(none) | 指定目录 | /var/log | 输出到指定目录的spring.log文件中 |
指定日志文件名
在application.properties中添加如下语句:
# 当前项目下生成springboot日志
logging.file.name=springboot.log
测试结果:
指定日志输出路径
在application.properties中添加如下语句:
#指定路径下生成springboot日志
logging.file.path=C:/Users/hemanman6/Desktop
测试结果:
控制台输出日志的格式
在application.properties中添加如下语句:
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} {%thread} %-5level %logger{50} -%msg%n
测试结果如下:
指定文件中日志输出的格式
在application.properties中添加如下语句:
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} === {%thread} === %-5level === %logger{50} === %msg%n
测试结果如下:
指定配置
给类路径下放上每个日志框架自己的配置文件即可,SpringBoot就不使用它默认设置的了
官网的日志介绍:
https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#boot-features-logging
日志系统与日志系统配置文件的对应关系如下:
logback.xml
:直接被日志框架识别了
logback-spring.xml
:日志框架就不直接加载日志的配置项,由SpringBoot来解析日志配置,可以使用SpringBoot的高级Profile功能。
<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>
否则
no applicable action for[springProfile]