Java 开源日志框架,以继承改善 log4j 为目的而生,是 log4j 创始人 Ceki Gülcü 的开源产品。 它声称有极佳的性能,占用空间更小,且提供其他日志系统缺失但很有用的特性。 其一大特色是,在 logback-classic 中本地(native)实现了 SLF4J API(也表示依赖 slf4j-api) 🍜
xml
        <!--slf4j日志门面-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.26</version>
        </dependency>
        <!--logback日志实现-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
以下只针对sql语句输出的配置
ymllogging:
  level:
    com.ewell.medqc.rec.management.mapper: debug
在模块的resources目录下创建logback-spring.xml,springboot官方推荐这样命名
xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
	<include resource="org/springframework/boot/logging/logback/defaults.xml" />
	<springProperty scope="context" name="springAppName" source="spring.application.name" />
  <!--组件名称-->
  <property name="COMPONENT_ID" value="medical-record" />
  <!--服务名称-->
  <property name="SEGMENT_ID" value="rec-management" />
  <!--日志文件输出路径-->
  <property name="LOG_HOME" value="./logs/${COMPONENT_ID}/${SEGMENT_ID}" />
  <!-- 日志编码 -->
  <property name="log.charset" value="UTF-8" />
  <!-- 日志文件大小,超过这个大小将重新创建,可以根据实际情况调整-->
  <property name="log.max.size" value="25MB" />
  <!-- 文件中的日志输出样式 -->
  <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
  <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
  <!-- 控制台的日志输出样式 -->
  <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n" />
  <!-- 控制台输出 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
			<charset>${log.charset}</charset>
		</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>
    <file>${LOG_HOME}/${SEGMENT_ID}.error.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>${LOG_HOME}/${SEGMENT_ID}.error.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
      <maxHistory>7</maxHistory>
      <maxFileSize>${log.max.size}</maxFileSize>
      <totalSizeCap>2GB</totalSizeCap>
    </rollingPolicy>
      <!--输出格式-->
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--格式化输出-->
        <pattern>${FILE_LOG_PATTERN}</pattern>
        <!--设置编码-->
        <charset>${log.charset}</charset>
    </encoder>
  </appender>
  <!-- error 文件配置 结束-->
  <!-- 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>
    <file>${LOG_HOME}/${SEGMENT_ID}.info.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>${LOG_HOME}/${SEGMENT_ID}.info.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
      <maxHistory>7</maxHistory>
      <maxFileSize>${log.max.size}</maxFileSize>
      <totalSizeCap>2GB</totalSizeCap>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>${FILE_LOG_PATTERN}</pattern>
      <charset>${log.charset}</charset>
    </encoder>
  </appender>
  <!-- info 文件配置 结束-->
<!--   sql输出日志-->
 <appender name="sql_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
     <file>${LOG_HOME}/${SEGMENT_ID}.sql.log</file>
     <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
         <!--日志文件输出的文件名-->
         <FileNamePattern>${LOG_HOME}/${SEGMENT_ID}.sql.log.%d{yyyy-MM-dd}.%i.zip</FileNamePattern>
         <!--日志文件保留天数-->
         <maxHistory>7</maxHistory>
         <!--日志文件最大的大小-->
         <maxFileSize>${log.max.size}</maxFileSize>
         <totalSizeCap>2GB</totalSizeCap>
     </rollingPolicy>
     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
         <!-- 格式化输出: %d: 日期; %-5level: 级别从左显示5个字符宽度; %thread: 线程名; %logger: 类名; %M: 方法名; %line: 行号; %msg: 日志消息; %n: 换行符 -->
         <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{50}] [%M] [%line] - %msg%n</pattern>
         <charset>${log.charset}</charset>
     </encoder>
 </appender>
 <!-- myibatis log configure; nmae为maper文件对应的包路径,additivity代表是否把当前日志信息向上
 传递(<root>是它的上级),默认是true;这里设置为false,就不会把日志信息
 向root传入;level设置的级别为DEBUG,mabatis的日志级别默认为DEBUG级别;
 -->
 <logger name="com.ewell.medqc.rec.management.mapper" level="DEBUG" additivity="false">
     <appender-ref ref="sql_file"/>
 </logger>
<!--   sql输出日志结束-->
  <!-- TRACE < DEBUG < INFO < WARN < ERROR < FATAL -->
  <root level="INFO">
    <appender-ref ref="console"/>
    <appender-ref ref="file-error"/>
    <appender-ref ref="file-info"/>
    <appender-ref ref="sql_file"/>
  </root>
</configuration>
spring-boot-starter中默认就有logback日志框架
yml
# 日志配置
logging:
  level:
    com.ruoyi: debug
    org.springframework: warn
xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
	<include resource="org/springframework/boot/logging/logback/defaults.xml" />
	<springProperty scope="context" name="springAppName" source="spring.application.name" />
  <!--组件名称-->
  <property name="COMPONENT_ID" value="medical-record" />
  <!--服务名称-->
  <property name="SEGMENT_ID" value="rec-management" />
  <!--日志文件输出路径-->
  <property name="LOG_HOME" value="./logs/${COMPONENT_ID}/${SEGMENT_ID}" />
  <!-- 日志编码 -->
  <property name="log.charset" value="UTF-8" />
  <!-- 日志文件大小,超过这个大小将重新创建,可以根据实际情况调整-->
  <property name="log.max.size" value="25MB" />
  <!-- 文件中的日志输出样式 -->
  <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%p][%c][%M]-> %m%n"/>
	<!-- 控制台的日志输出样式 -->
	<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
  <!-- 控制台输出 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>DEBUG</level>
		</filter>
		<encoder>
			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
			<charset>${log.charset}</charset>
		</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>
    <file>${LOG_HOME}/${SEGMENT_ID}.error.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>${LOG_HOME}/${SEGMENT_ID}.error.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
      <maxHistory>7</maxHistory>
      <maxFileSize>${log.max.size}</maxFileSize>
      <totalSizeCap>2GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
      <pattern>${FILE_LOG_PATTERN}</pattern>
      <charset>${log.charset}</charset>
    </encoder>
  </appender>
  <!-- error 文件配置 结束-->
  <!-- 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>
    <file>${LOG_HOME}/${SEGMENT_ID}.info.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>${LOG_HOME}/${SEGMENT_ID}.info.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
      <maxHistory>7</maxHistory>
      <maxFileSize>${log.max.size}</maxFileSize>
      <totalSizeCap>2GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
      <pattern>${FILE_LOG_PATTERN}</pattern>
      <charset>${log.charset}</charset>
    </encoder>
  </appender>
  <!-- info 文件配置 结束-->
  <!-- TRACE < DEBUG < INFO < WARN < ERROR < FATAL -->
  <root level="INFO">
    <appender-ref ref="console"/>
    <appender-ref ref="file-error"/>
    <appender-ref ref="file-info"/>
  </root>
</configuration>
本文作者:Weee
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!