springboot整合日志,并在本地查看

目录

1.导入依赖

2.编写配置

3.使用

4.验证

5.打印错误信息


1.导入依赖


<!-- logback,向下兼容log4j,还支持SLF4J-->
<dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
</dependency>

2.编写配置

包括配置颜色字体,保存的位置等

在日志存放路径这栏,我设置存放在d盘log文件夹

主文件生成.log类型,info跟error生成txt文件

<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

    <!-- 日志存放路径 -->
    <property name="log.path" value="D:/log"/>
    <!-- 日志输出格式 -->
    <property name="log.pattern"
              value="%clr(%d{${yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr([%X{mdcTraceId},%X{mdcTraceNum}]){magenta} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(-&#45;&#45;){faint} %clr([%20.20t]){faint} %clr(%-40.40logger{39}){cyan} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
    <property name="file.log.pattern"
              value="%d{${yyyy-MM-dd HH:mm:ss.SSS}} [%X{mdcTraceId},%X{mdcTraceNum}] ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } -&#45;&#45; [%15.15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

    <!--    <springProperty scope="context" name="logFileName" source="spring.application.name" defaultValue="currentLog"/>-->
    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
            <!-- 记录日志的编码:此处设置字符集 - -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 全局日志输出 -->
    <appender name="file_application" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/application</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${log.path}/application/application.%i</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>1</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>5MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>${file.log.pattern}</pattern>
            <!-- 记录日志的编码:此处设置字符集 - -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.txt</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/info/%d{yyyy-MM-dd}-%i.txt</fileNamePattern>
            <!-- 每个文件最大值 -->
            <maxFileSize>10MB</maxFileSize>
            <!-- 最多保存30天的日志 -->
            <maxHistory>15</maxHistory>
            <!-- 最大限制 -->
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${file.log.pattern}</pattern>
            <!-- 记录日志的编码:此处设置字符集 - -->
            <charset>UTF-8</charset>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.txt</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error/%d{yyyy-MM-dd}-%i.txt</fileNamePattern>
            <!-- 每个文件最大值 -->
            <maxFileSize>10MB</maxFileSize>
            <!-- 最多保存30天的日志 -->
            <maxHistory>15</maxHistory>
            <!-- 最大限制 -->
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${file.log.pattern}</pattern>
            <!-- 记录日志的编码:此处设置字符集 - -->
            <charset>UTF-8</charset>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 系统模块日志级别控制  -->
    <logger name="com.org.sys" level="debug"/>
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn"/>
    <logger name="com.zaxxer.hikari" level="warn"/>
    <logger name="io.lettuce.core" level="warn"/>
    <logger name="io.seata.core" level="warn"/>
    <logger name="com.netflix.loadbalancer" level="warn"/>

    <root level="info">
        <appender-ref ref="console"/>
    </root>

    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_application"/>
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>
</configuration>

3.使用

两种方法1.类上加注解2.通过LoggerFactory创建

需要注意的是使用类上加@Slf4j注解的方式需要依赖lombok,所以要导入lombok依赖

  <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
</dependency>
@RestController
@RequestMapping("/test")
@CrossOrigin
@Slf4j
public class TestController {
 
    // 编辑xml配置文件 controller层表明使用 通过logger.info进行打印显示
    private static final Logger logger = LoggerFactory.getLogger(TestController.class);


    @RepeatSubmit
    @PostMapping("/test")
    public String login() {
        User user = new User();
        user.setName("日志记录人");
        log.info("测试注解@Slf4j的使用,{}",JSON.toJSONString(user));
        logger.info("打印日志信息{}", JSON.toJSONString(user));
        return "你好啊,doPost方法";
    }
}

4.验证

postman接口测试

控制台打印出来的日志

本地log文件夹保存的日志

5.打印错误信息

使用: log.error()  或者  logger.error()

 public String login() {
        User user = new User();
        user.setName("日志记录人");
        log.info("测试注解@Slf4j的使用,{}",JSON.toJSONString(user));
        logger.info("打印日志信息{}", JSON.toJSONString(user));
        log.error("错误信息");
        logger.error("错误信息");
        return "你好啊,doPost方法";
    }

控制台打印

这时候去log文件夹下的err.txt里面看或者application.log看

error.txt

application.log

区别:application总的,err和info是根据分类进行存储。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 项目中记录日志可以使用 Logback 或者 Log4j2。这里以 Logback 为例,步骤如下: 1. 在 pom.xml 文件中添加 logback 依赖: ``` <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </dependency> ``` 2. 在 src/main/resources 目录下创建 logback.xml 文件,配置日志输出格式和输出位置等信息。以下是一个简单的示例配置文件: ``` <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="CONSOLE" 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"> <file>logs/app.log</file> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> </appender> <logger name="com.example" level="DEBUG" additivity="false"> <appender-ref ref="FILE" /> </logger> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> </configuration> ``` 这个配置文件中定义了两个 appender,一个是 CONSOLE,表示将日志输出到控制台;另一个是 FILE,表示将日志输出到文件中。其中,fileNamePattern 配置了日志文件的命名格式,maxHistory 配置了最多保存多少个历史日志文件。 3. 在代码中使用 LoggerFactory 获取 Logger 对象,然后即可进行日志记录。例如: ``` import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DemoController { private static final Logger logger = LoggerFactory.getLogger(DemoController.class); public void doSomething() { logger.debug("Debug log message"); logger.info("Info log message"); logger.warn("Warn log message"); logger.error("Error log message"); } } ``` 运行程序后,日志将会输出到控制台和指定的日志文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值