【SpringBoot】十六、打印日志输出

it2023-05-04  75

非注解方式

package com.example.demo3.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * @author piano */ @Controller public class LogController { private static final Logger logger = LoggerFactory.getLogger(MyController.class); @RequestMapping("/log") @ResponseBody public String outputLog(){ logger.info("info_hello"); logger.warn("warn_hello"); logger.error("error_hello"); return "Hello"; } }

控制台打印: 

 

注解方式

添加依赖

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.22</version> </dependency>

在要打印日志的类上添加注解 @Slf4j ,然后调用 log.xxx

package com.example.demo3.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * @author piano */ @Slf4j @Controller public class LogController { @RequestMapping("/log") @ResponseBody public String outputLog(){ log.info("info_hello"); log.warn("warn_hello"); log.error("error_hello"); return "Hello"; } }

 

日志输出文件

如果想把日志也输出到某个文件中,则需要添加配置文件了,在resource下添加一个 log4j2.xml 文件

<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="10 seconds"> <contextName>logback</contextName> <!-- 彩色日志 --> <!-- 彩色日志依赖的渲染类 --> <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="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符--> <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" /> <!-- 定义日志存储的路径,不要配置相对路径 --> <property name="FILE_PATH" value="E:/Pro_MyBatis_Log/spring-log.%d{yyyy-MM-dd}.%i.log" /> <!-- 控制台输出日志 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <!-- 日志级别过滤INFO以下 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <encoder> <!-- 按照上面配置的LOG_PATTERN来打印日志 --> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </appender> <!--每天生成一个日志文件,保存30天的日志文件。rollingFile用来切分文件的 --> <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${FILE_PATH}</fileNamePattern> <!-- keep 15 days' worth of history --> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- 日志文件的最大大小 --> <maxFileSize>2MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!-- 超出删除老文件 --> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <!-- project default level --> <logger name="net.sh.rgface.serive" level="ERROR" /> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="console" /> <appender-ref ref="rollingFile" /> </root> </configuration>

其中有一个点要注意,就是设置日志生产的路径

<!-- 定义日志存储的路径,不要配置相对路径 --> <property name="FILE_PATH" value="E:/Pro_MyBatis_Log/spring-log.%d{yyyy-MM-dd}.%i.log" />

添加 application.yml 配置

logging: config:classpath:log4j2.xml

运行项目,生成的日志文件:

内容:  

 

 

参考博文:https://blog.csdn.net/innovationad/article/details/80895508

 

最新回复(0)