1. 没有配置logback.xml的情况下
在没有配置logback.xml的情况下,可以在application.yml文件中,增加控制台日志输出的参数配置。
日志参数:
# 日志记录输出配置
logging:
level:
com:
platform:
product:
mapper: debug
这里只针对com.platform.product.mapper这个包,设置的日志级别为debug,这样会打印出执行sql的日志。
2022-05-06 11:21:34.616 DEBUG 31012 --- [nio-9203-exec-4] c.p.p.mapper.ProductMapper.selectById : ==> Preparing: select id, price, stock, last_update_time from product where id = ?
2022-05-06 11:21:34.617 DEBUG 31012 --- [nio-9203-exec-4] c.p.p.mapper.ProductMapper.selectById : ==> Parameters: 1(Long)
2022-05-06 11:21:34.638 DEBUG 31012 --- [nio-9203-exec-4] c.p.p.mapper.ProductMapper.selectById : <== Total: 1
......
2022-05-06 11:21:34.641 DEBUG 31012 --- [nio-9203-exec-4] c.p.p.mapper.ProductMapper.updateById : ==> Preparing: update product set price = ?, stock = ?, last_update_time = sysdate() where id = ?
2022-05-06 11:21:34.641 DEBUG 31012 --- [nio-9203-exec-4] c.p.p.mapper.ProductMapper.updateById : ==> Parameters: 10.0(Double), 85(Integer), 1(Integer)
2022-05-06 11:21:34.644 DEBUG 31012 --- [nio-9203-exec-4] c.p.p.mapper.ProductMapper.updateById : <== Updates: 1
日志内容包括执行sql时的输入参数和返回值,这样方便查找原因。
控制台日志,一般重定向到一个文件后,下次重启,会覆盖之前的日志文件。如果需要查看之前的日志信息,需要提前进行备份,这样就有些不方便,这个时候,可以通过logback-spring.xml文件进行日志输出的配置。
2. 配置logback-spring.xml的情况下
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路径 -->
<!-- 配置文件名必须为logback-spring.xml,否则applicationName在一开始会找不到,会生成一个applicationName_IS_UNDEFINED.log的空文件 -->
<springProperty scope="context" name="log.path" source="app.log.home.dir" defaultValue="./logs"/>
<property name="log.filePrefix" value="spring-console" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/${log.filePrefix}-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/${log.filePrefix}-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 系统日志输出 -->
<appender name="file_debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/${log.filePrefix}-debug.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/${log.filePrefix}-debug.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>DEBUG</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/${log.filePrefix}-error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/${log.filePrefix}-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 显示形成的sql、使用的参数、结果集 -->
<!-- <logger name="java.sql" level="debug" />
<logger name="org.springframework.jdbc" level="debug" /> -->
<!-- 系统模块日志级别控制 -->
<logger name="com.platform" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />
<!-- 开发环节才输出控制台日志 -->
<!-- <springProfile name="dev"> -->
<root level="info">
<appender-ref ref="console" />
</root>
<!-- </springProfile> -->
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_debug" />
<appender-ref ref="file_error" />
</root>
</configuration>
该配置文件的具体含义这里就不多说了。添加该配置后,程序运行时,可以根据配置分别生成不同类型的日志文件。
其中,debug.log记录调试信息,error.log记录错误日志,info.log记录info级别的日志。