在spring boot中,spring-boot-starter-logging
是spring-boot-starter
的一个依赖,也就意味着spring boot项目默认就有了例如日志的能力。spring-boot-starter-logging
中包含了SLF4J以及Logback的实现,并且,spring boot logging还支持自动配置。所以,日志的功能在spring boot中是开箱即用的
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static Logger logger = LoggerFactory.getLogger(TestContoller.class);
拿到logger后就可以直接写日志了。不过此时日志的级别是默认的INFO,并且日志只输出到stdout中。下面来看一下如何修改日志级别,以及将日志写入本地文件,只需要在application.properties文件中简单地配置一下即可
logging.level.com.example.springbootstart=DEBUG # 将此项目的包的日志级别设置为DEBUG
logging.path=/tmp/starter/logging # local path
如果你觉得这些配置不能满足你的要求,你可以将logback.xml
文件放到你classpath的根目录下,spring boot会自动读取并采用这个文件中的配置。
如果你想使用别的日志框架,如log4j等,也是支持的,只需要将spring-boot-starter-logging
从spring-boot-starter
排除,并加入你想用的日志框架的包即可。下面的配置演示了如何使用log4j作为默认的日志工具
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
使用logback配置文件
在spring-boot中,可以在resources文件夹内添加一个 logback-spring.xml 文件,既可以使用spring的配置项,又可以使用logback配置文件的写法。下面是一个实例,它配置了将日志输出到当前目录的logs文件夹中,每天生成一个日志文件。
<configuration>
<springProperty scope="context" name="logging.path" source="logging.path" defaultValue="logs"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logging.path}/%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.demo" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>
</configuration>