springboot默认的日志由抽象层的slf4j和实现层的logback组成。在默认情况下仅输出info、warn和error。
入门示例
在项目这里写一段测试代码:
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
class Demo1ApplicationTests {
private static final Logger logger = (Logger) LoggerFactory.getLogger(Demo1ApplicationTests.class);
@Test
void contextLoads() {
try {
logger.trace("trace日志...");
logger.debug("debug日志...");
logger.info("info日志...");
logger.warn("warn日志...");
logger.error("error日志...");
} catch (Exception e) {
System.out.println(e);
}
}
}
此时的输出:
如果使用了lombok的话,可以直接用 @Slf4j 注解,不用初始化logger,直接用log。输出跟上面一样。
@SpringBootTest
@Slf4j
class Demo1ApplicationTests {
@Test
void contextLoads() {
try {
log.trace("trace日志...");
log.debug("debug日志...");
log.info("info日志...");
log.warn("warn日志...");
log.error("error日志...");
} catch (Exception e) {
System.out.println(e);
}
}
}
配置
可以修改application.yml配置日志的输出路径。
#按照默认的名称spring.log,生成到指定路径及日志。
logging.file.path=output/logs
#不指定的情况下默认生成在项目根目录,按照配置生成所需的日志名称
#此时就不用配logging.file.path了
logging.file=D:/ooodin.log
#以上的两种设置,springboot都会自动按天分割日志文件,之前的会自动打成gz包,
#即每天会新生成一个原文件名.日期.gz文件
#日志文件大小 【已过时】
logging.file.max-size=10MB
#保留的日志时间 【已过时】
logging.file.max-history=10
配置举例:这里要求输出类和行数
logging:
file:
path: C:\Users\Dell\Desktop\logs
pattern:
file: '%d{yyyy/MM/dd-HH:mm:ss} [%thread] [%class:%line] %-5level %logger- %msg%n'
日志级别总共有TRACE < DEBUG < INFO < WARN < ERROR < FATAL ,且级别是逐渐提供,如果日志级别设置为INFO,则意味TRACE和DEBUG级别的日志都看不到。(因此默认是info级别啊)
可以为不同的包设置不同的输出级别。如下面的就是config包的日志只显示warn以上
logging.level.root=INFO
logging.level.com.jackie.springbootdemo.config=WARN
修改日志的格式:console是控制台格式,file是输出文件的格式
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n