SpringBoot整合日志

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。SpringBoot整合日志,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!