SpringBoot 日志配置

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration debug="false" scan="true" scanPeriod="30 seconds">
<springProfile name="dev">
<!-- 存放日志文件路径 -->
<property name="Log_Home" value="${user.dir}/logs"/>
</springProfile>
<springProfile name="test,prod">
<property name="Log_Home" value="${user.dir}/logs"/>
</springProfile>
<!--日志文件日期,单位 天-->
<property name="log.maxHistory" value="7"/>
<!-- 默认值是 10MB,文档最大值 -->
<property name="log.maxFileSize" value="100MB" />
<!--总日志文件大小-->
<property name="log.totalSizeCap" value="20GB"/>

<!-- ch.qos.logback.core.ConsoleAppender 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<charset>UTF-8</charset>
<!--
%d{HH:mm:ss.SSS}——日志输出时间
%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
%-5level——日志级别,并且使用5个字符靠左对齐
%logger- ——日志输出者的名字
%msg——日志消息
%n——平台的换行符
-->
<pattern>%d{yyyy-MM-dd HH:mm:ss SSS} [%level] [%thread] [%logger:%line] -- %msg%n</pattern>
</encoder>
</appender>

<!-- DEBUG 级别 -->
<appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 级别过滤器 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 设置过滤级别 -->
<level>DEBUG</level>
<!-- 用于配置符合过滤条件的操作 -->
<onMatch>ACCEPT</onMatch>
<!-- 用于配置不符合过滤条件的操作 -->
<onMismatch>DENY</onMismatch>
</filter>
<!-- 根据时间来制定滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${Log_Home}/debug/debug.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<MaxHistory>${log.maxHistory}</MaxHistory>
<MaxFileSize>${log.maxFileSize}</MaxFileSize>
<totalSizeCap>${log.totalSizeCap}</totalSizeCap>
</rollingPolicy>
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%level] [%thread] [%logger:%line] -- %msg%n</Pattern>
</encoder>
</appender>

<!-- INFO 级别 -->
<appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 级别过滤器 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 设置过滤级别 -->
<level>INFO</level>
<!-- 用于配置符合过滤条件的操作 -->
<onMatch>ACCEPT</onMatch>
<!-- 用于配置不符合过滤条件的操作 -->
<onMismatch>DENY</onMismatch>
</filter>
<!-- 定义日志文件大小和时间策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${Log_Home}/info/info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!-- 当每个文件达到100MB,会生成新的日志文件,日志文件最多保存60天,总日志文件大小达到20GB,会删除旧日志-->
<maxFileSize>${log.maxFileSize}</maxFileSize>
<maxHistory>${log.maxHistory}</maxHistory>
<totalSizeCap>${log.totalSizeCap}</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%level] [%thread] [%logger:%line] -- %msg%n</Pattern>
</encoder>
</appender>

<!-- WARN 级别 -->
<appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 级别过滤器 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 设置过滤级别 -->
<level>WARN</level>
<!-- 用于配置符合过滤条件的操作 -->
<onMatch>ACCEPT</onMatch>
<!-- 用于配置不符合过滤条件的操作 -->
<onMismatch>DENY</onMismatch>
</filter>
<!-- 根据时间来制定滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${Log_Home}/warn/warn.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxFileSize>${log.maxFileSize}</maxFileSize>
<maxHistory>${log.maxHistory}</maxHistory>
<totalSizeCap>${log.totalSizeCap}</totalSizeCap>
</rollingPolicy>
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%level] [%thread] [%logger:%line] -- %msg%n</Pattern>
</encoder>
</appender>

<!-- ERROR 级别 -->
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 级别过滤器 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 设置过滤级别 -->
<level>ERROR</level>
<!-- 用于配置符合过滤条件的操作 -->
<onMatch>ACCEPT</onMatch>
<!-- 用于配置不符合过滤条件的操作 -->
<onMismatch>DENY</onMismatch>
</filter>
<!-- 根据时间来制定滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${Log_Home}/error/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxFileSize>${log.maxFileSize}</maxFileSize>
<maxHistory>${log.maxHistory}</maxHistory>
<totalSizeCap>${log.totalSizeCap}</totalSizeCap>
</rollingPolicy>
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%level] [%thread] [%logger:%line] -- %msg%n</Pattern>
</encoder>
</appender>

<!--myibatis log configure-->
<logger name="com.zofund.product.dao" level="DEBUG"/>
<logger name="org.springframework.jdbc.datasource" level="DEBUG"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>

<!-- show parameters for hibernate sql 专为 Hibernate 定制 -->
<!--
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />
-->

<!-- 当前日志总级别为TRACE、DEBUG、INFO、 WARN、ERROR、ALL和 OF -->
<!-- <root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE_DEBUG"/>
<appender-ref ref="FILE_INFO"/>
<appender-ref ref="FILE_WARN"/>
<appender-ref ref="FILE_ERROR"/>
</root>-->

<!--开发环境:打印控制台-->
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</springProfile>
<!--生产环境:输出到文件-->
<springProfile name="test,prod" >
<root level="INFO">
<appender-ref ref="FILE_DEBUG"/>
<appender-ref ref="FILE_INFO"/>
<appender-ref ref="FILE_WARN"/>
<appender-ref ref="FILE_ERROR"/>
</root>
</springProfile>
<!--https://www.cnblogs.com/wuyoucao/p/10983241.html https://blog.csdn.net/weixin_39184713/article/details/93619359-->
</configuration>
posted on 2019-11-15 10:42  花非花-雾非雾  阅读(298)  评论(0)    收藏  举报