<?xml version="1.0" encoding="UTF-8"?><!--please pay attention that: file name should not be logback.xml,name it logback-spring.xml to use it in springboot framework--><configuration><!-- 配置文件中配置日志路径以及日志等级 --><springPropertyscope="context"name="logging.profile"source="spring.profiles.active"/><springPropertyscope="context"name="logging.path"source="logging.path"/><springPropertyscope="context"name="logging.level"source="logging.level"/><springPropertyscope="context"name="logging.name"source="spring.application.name"/><!-- 日志的格式 --><appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender"><encoderclass="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{80} - %msg%n</Pattern></encoder></appender><!-- 错误日志的打印方式 --><appendername="ERROR-APPENDER"class="ch.qos.logback.core.rolling.RollingFileAppender"><append>true</append><!-- 限制到error级别--><filterclass="ch.qos.logback.classic.filter.ThresholdFilter"><level>error</level></filter><file>${logging.path}/${logging.name}-error-${logging.profile}.log}</file><!-- 错误日志的命名 --><!-- 错误日志的保存时间以及按日期的命名格式 --><!-- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">--><rollingPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- 错误日志按日期命名格式--><FileNamePattern>
${logging.path}/${logging.name}-error.%d{yyyy-MM-dd}.%i.log
</FileNamePattern><!-- 保存时间 --><maxFileSize>10MB</maxFileSize><maxHistory>7</maxHistory><!--每个文件最多10MB,保留7天的历史记录,但最多500MB--><totalSizeCap>500MB</totalSizeCap><!--重启清理日志文件--><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoderclass="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!-- 错误日志的格式 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><!-- 编码 --><charset>UTF-8</charset></encoder></appender><!-- 生成html格式日志开始 --><appendername="HTML-APPENDER"class="ch.qos.logback.core.FileAppender"><!-- 过滤器,只记录error级别的日志 --><filterclass="ch.qos.logback.classic.filter.LevelFilter"><level>error</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><encoderclass="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layoutclass="ch.qos.logback.classic.html.HTMLLayout"><pattern>%p%d%msg%M%F{32}%L</pattern></layout><!-- encoding --><charset>UTF-8</charset></encoder><file>${logging.path}/${logging.name}-error-log.html</file></appender><appendername="COMMON-APPENDER"class="ch.qos.logback.core.rolling.RollingFileAppender"><append>true</append><filterclass="ch.qos.logback.classic.filter.ThresholdFilter"><level>${logging.level}</level></filter><file>${logging.path}/${logging.name}-${logging.profile}.log}</file><!-- to generate a log file everyday with a longest lasting of 30 days --><rollingPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- logfile name with daily rolling--><FileNamePattern>
${logging.path}/${logging.name}-${logging.profile}.%d{yyyy-MM-dd}.%i.log
</FileNamePattern><maxFileSize>10MB</maxFileSize><maxHistory>2</maxHistory><totalSizeCap>100MB</totalSizeCap><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoderclass="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--output format:%d is for date,%thread is for thread name,%-5level:loglevel with 5 character %msg:log message,%n line breaker--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><!-- encoding --><charset>UTF-8</charset></encoder></appender><!--记录所有日志--><appendername="FILE_ALL"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${logging.path}/${logging.name}-all.log</file><rollingPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><FileNamePattern>
${logging.path}/${logging.name}-all.%d{yyyy-MM-dd}.%i.zip
</FileNamePattern><maxFileSize>10MB</maxFileSize><maxHistory>7</maxHistory><totalSizeCap>500MB</totalSizeCap><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoderclass="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n</pattern></encoder><append>false</append></appender><springProfilename="dev"><!--开发环境 只需要打印到窗口以及错误日志即可 --><loggername="com.apache.ibatis"level="DEBUG"/><loggername="java.sql.Connection"level="DEBUG"/><loggername="java.sql.Statement"level="DEBUG"/><loggername="java.sql.PreparedStatement"level="DEBUG"/><loggername="org.springframework"level="error"/><!--自己的项目路径--><loggername="com.gs.quzhou.daping"level="${logging.level}"additivity="false"><appender-refref="STDOUT"/><appender-refref="ERROR-APPENDER"/></logger><rootlevel="${logging.level}"><appender-refref="STDOUT"/><appender-refref="ERROR-APPENDER"/><appender-refref="FILE_ALL"/></root></springProfile><springProfilename="test"><!--测试环境 只需要打印到日志文件以及错误日志即可 --><loggername="com.apache.ibatis"level="INFO"/><loggername="java.sql.Connection"level="INFO"/><loggername="java.sql.Statement"level="INFO"/><loggername="java.sql.PreparedStatement"level="DEBUG"/><!--自己的项目路径--><loggername="com.gs.quzhou.daping"level="${logging.level}"additivity="false"><appender-refref="COMMON-APPENDER"/><appender-refref="ERROR-APPENDER"/><appender-refref="FILE_ALL"/></logger><rootlevel="${logging.level}"><appender-refref="COMMON-APPENDER"/><appender-refref="ERROR-APPENDER"/></root></springProfile><springProfilename="prod"><!--生产环境 只需要打印到日志文件以及错误日志,保留错误日志html --><loggername="com.apache.ibatis"level="WARN"/><loggername="java.sql.Connection"level="WARN"/><loggername="java.sql.Statement"level="WARN"/><loggername="java.sql.PreparedStatement"level="WARN"/><!--自己的项目路径--><loggername="com.gs.quzhou.daping"level="${logging.level}"additivity="false"><appender-refref="COMMON-APPENDER"/><appender-refref="ERROR-APPENDER"/></logger><rootlevel="${logging.level}"><appender-refref="COMMON-APPENDER"/><appender-refref="HTML-APPENDER"/><appender-refref="ERROR-APPENDER"/></root></springProfile></configuration>