一个项目在实现功能之前,一般都会先完善一些基础组件,例如日志、数据库连接等。
本文将在上文基础上加入日志组件。
本项目使用logback作为日志组件。相对log4j,logback的性能更为优秀,官方文档也很充分。
在springboot中,我们不需要为日志组件添加依赖项,,因为Spring Boot 默认的日志框架就是 Logback+SLF4J。仅需要依赖web组件即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
而该依赖项在我们创建项目的时候就已经添加了。
默认情况下Spring Boot将日志输出到控制台,不会写到日志文件。如果要编写除控制台输出之外的日志文件,则需在application.properties中设置logging.file或logging.path属性
logging.file=文件名(可以是相对路径或者绝对路径)
logging.level.包名=指定包下的日志级别
官方推荐使用-spring.xml文件做为配置文件,如logback-spring.xml,放置于/src/main/resoures下。当然名称可以自定义,此时只需要在application.properties文件中使用logging.config=classpath:XXXXXXXX指定即可。
项目配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<!--应用名称-->
<property name="APP_NAME" value="aegis"/>
<!--日志文件保存路径-->
<property name="LOG_FILE_PATH" value="logs"/>
<contextName>${APP_NAME}</contextName>
<!--每天记录日志到文件appender-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
配置这里不做解释了,基本上日志都是三维构成Logger,Appender和Layout。
添加了上面的配置后,即可在任意类中,使用如下语句获取日志对象:
private final Logger logger = LoggerFactory.getLogger(getClass());
再次调用该接口,即可看到控制台输出了hello world,项目根目录中也打印出了logs文件。