SpringBoot整合日志
1、在SpringBoot中,我们可以使用Logback作为日志框架,在pom.xml文件中加入以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2.然后在src/main/resources目录下创建logback-spring.xml文件,配置日志输出格式和日志文件输出路径:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志输出格式 -->
<property name="LOG_PATTERN" value="%!d(MISSING){yyyy-MM-dd HH:mm:ss.SSS} [%!t(MISSING)hread] %!l(MISSING)evel %!l(MISSING)ogger{36} - %!m(MISSING)sg%!n(MISSING)"/>
<!-- 输出到控制台 -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 输出到文件 -->
<appender name="File" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/app.%!d(MISSING){yyyy-MM-dd}.%!i(MISSING).log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="Console"/>
<appender-ref ref="File"/>
</root>
</configuration>
其中,LOG_HOME是日志文件输出路径,可以在application.properties中进行配置:
logging.path=/var/log/myapp
这样就可以将日志文件输出到/var/log/myapp目录下了。在代码中,我们可以使用LoggerFactory获取Logger对象,然后使用Logger对象输出日志:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyService {
private static final Logger logger = LoggerFactory.getLogger(MyService.class);
public void doSomething() {
logger.info("doing something");
}
}
这样就完成了SpringBoot整合日志的配置。
2、整合@Log4j2日志注解:
@Log4j2注解默认会将日志输出到控制台上,如果需要将日志输出到指定位置,可以通过配置Log4j2的属性来实现。
1、在项目的resources目录下创建一个log4j2.xml文件,用于配置Log4j2的属性。例如,将日志输出到项目根目录下的logs目录中,可以按照如下配置:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<RollingFile name="RollingFile" fileName="./logs/app.log"
filePattern="./logs/app-%!d(MISSING){yyyy-MM-dd}-%!i(MISSING).log.gz">
<PatternLayout>
<Pattern>%!d(MISSING) %!p(MISSING) %!c(MISSING){1.} [%!t(MISSING)] %!m(MISSING)%!n(MISSING)</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10MB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>
该配置会将日志输出到项目根目录下的logs目录中,日志文件名为app.log,当日志文件大小超过10MB时,会自动滚动到下一个日志文件。
2. 在@Log4j2注解中指定Logger对象的名称,例如:
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
@Service
@Log4j2(value = "myLogger")
public class MyService {
public void doSomething() {
myLogger.info("doing something");
}
}
这样就可以通过myLogger对象输出日志,日志会自动输出到log4j2.xml中配置的位置。 需要注意的是,log4j2.xml文件的位置和文件名可以根据实际情况进行修改,但需要在application.properties文件中指定log4j2配置文件的位置,例如:
logging.config=classpath:log4j2.xml
3、整合@Slf4j 日志注解
@Slf4j是Lombok提供的一种简化日志输出的注解,可以快速生成Logger对象。如果需要将日志输出到指定位置,可以通过配置Logback的属性来实现。
在项目的resources目录下创建一个logback.xml文件,用于配置Logback的属性。例如,将日志输出到项目根目录下的logs目录中,可以按照如下配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>./logs/app.%!d(MISSING){yyyy-MM-dd}.%!i(MISSING).log.gz</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%!d(MISSING){yyyy-MM-dd HH:mm:ss.SSS} %!l(MISSING)evel %!l(MISSING)ogger{35} - %!m(MISSING)sg%!n(MISSING)</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="FILE" />
</root>
</configuration>
该配置会将日志输出到项目根目录下的logs目录中,日志文件名为app.log,当日志文件大小超过10MB时,会自动滚动到下一个日志文件,最多保留30个日志文件。
2、 在需要使用日志的类上添加@Slf4j注解,例如:
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MyService {
public void doSomething() {
log.info("doing something");
}
}
这样就可以在MyService类中使用log对象输出日志,日志会自动输出到logback.xml中配置的位置。 需要注意的是,logback.xml文件的位置和文件名可以根据实际情况进行修改,但需要在application.properties文件中指定logback配置文件的位置,例如:
logging.config=classpath:logback.xml
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/188552.html