searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

logback配置文件XML详解

2023-06-15 03:08:10
22
0

Logback 是一个基于 Java 的日志框架,被广泛应用于 Java 应用程序中。它是 Log4j 框架的改进版,提供了高度可配置的日志记录功能,具有灵活性和性能优势

Logback 包含了三个主要的组件:Logger、Appender 和 Layout。Logger 用于创建日志记录器,Appender 用于定义日志输出的目标,而 Layout 则定义了日志的格式。

以下是 Logback 的一些主要特点:

  1. 高度可配置:Logback 允许通过 XML 配置文件或者编程方式进行灵活的配置。你可以定义日志输出的级别、输出目标、格式等等。

  2. 继承 Log4j:Logback 被设计为 Log4j 的直接替代品,可以无缝迁移现有的 Log4j 配置文件到 Logback。

  3. 低开销:Logback 在设计上尽量减少对系统性能的影响,具有高效的异步日志记录机制和线程安全性。

  4. 支持多种输出:Logback 提供了多种 Appender,包括 ConsoleAppender、FileAppender、SocketAppender 等,可以将日志输出到控制台、文件、网络等不同目标。

  5. 灵活的过滤器:Logback 允许通过过滤器机制对日志进行过滤和处理,你可以根据日志级别、关键字等条件来过滤日志记录。

  6. SLF4J 兼容:Logback 与 SLF4J(Simple Logging Facade for Java)框架无缝集成,SLF4J 提供了一个统一的日志门面,使得应用程序可以方便地切换日志框架而不需要修改代码。

下面是logba.xml配置文件引入java后台的流程和配置详解:

1查找默认配置文件

logback默认会查找以下文件

logback-test.xml

logback.groovy

logback.xml

2 配置节点

2.1 根节点<configuration>

根节点包含以下属性

  • scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  • scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  • debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
<?xml version="1.0" encoding="UTF-8"?>
<!--        scan : 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true-->
<configuration scan="false" scanPeriod="60 seconds" debug="false">
</configuration>

 2.2 子节点<appender>

负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名。

appender实现类有以下几种。

1. ConsoleAppender 日志输出到控制台

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>stdout %d %p - %m%n</pattern>
    </encoder>
</appender>

2. FileAppender 日志添加到文件(静态文件)

  • <file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
  • <append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
  • <encoder>:对记录事件进行格式化。(具体参数稍后讲解 )
  • <prudent>:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
  <file>testFile.log</file>
  <append>true</append>
  <encoder>
     <pattern>%d %p - %m%n</pattern>
  </encoder>
</appender>

3. RollingFileAppender(动态文件)

RollingFileAppender滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。

  • <file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
  • <append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
  • <rollingPolicy>:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类。

rollingPolicy有一些策略:

class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy": 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。

  • <fileNamePattern>:必要节点,包含文件名及“%d”转换符,“%d”可以包含一个java.text.SimpleDateFormat指定的时间格式,如:%d{yyyy-MM}。
  • <maxHistory>:日志文件保留天数

class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy": 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动

  • <maxFileSize>:这是活动文件的大小,默认值是10MB。
  • <prudent>:当为true时,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有两个限制,1不支持也不允许文件压缩,2不能设置file属性,必须留空。
  • <triggeringPolicy >: 告知 RollingFileAppender 合适激活滚动。

class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy" 根据固定窗口算法重命名文件的滚动策略

  • <minIndex>:窗口索引最小值
  • <maxIndex>:窗口索引最大值,当用户指定的窗口过大时,会自动将窗口设置为12。
  • <fileNamePattern>:必须包含“%i”例如,假设最小值和最大值分别为1和2,命名模式为 mylog%i.log,会产生归档文件mylog1.log和mylog2.log。还可以指定文件压缩选项,例如,mylog%i.log.gz 或者 没有log%i.log.zip
<appender name="STDFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  <!-- 每天一归档 -->
  <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
   <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB,窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志 -->
   <maxFileSize>100MB</maxFileSize>   
   <maxHistory>60</maxHistory>
   <totalSizeCap>20GB</totalSizeCap>
   <minIndex>1</minIndex>
  <maxIndex>3</maxIndex>
</rollingPolicy>
<encoder>
  <pattern>%msg%n</pattern>
</encoder>
</appender>

2.3.root节点,必选节点

<root level="INFO">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="INFO_FILE"/>
    <appender-ref ref="WARN_FILE"/>
    <appender-ref ref="ERROR_FILE"/>
</root>

2.4 logger节点,可选节点

name:用来指定受此logger约束的某一个包或者具体的某一个类。

level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,

additivity:是否继承root节点,默认是true继承。默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。

2.5. 子节点<property>


用来定义变量值,它有两个属性name和value,通过<property>定义的值会被插入到logger上下文中,可以使“${}”来使用变量。

<property name="log.path" value="logs"></property>

2.6子节点<contextName>

  用来设置上下文名称,每个logger都关联到logger上下文,默认上下文名称为default。但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。

<configuration scan="true" scanPeriod="60 seconds" debug="false">
     <contextName>myApp</contextName>
    <!--其他配置省略-->
</configuration>

3.完整的Logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志上下文名称   -->
    <contextName>realtime-flink</contextName>
    <!-- 日志输出编码 -->
    <property name="log.charset" value="utf-8"/>
    <!-- 日志存放路径 -->
    <property name="log.path" value="logs"/>
    <!-- 日志输出格式 -->
    <property name="log.pattern"
              value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%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}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 180天 -->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>{"log":"%date{yyyy-MM-dd HH:mm:ss.SSS}[%thread] %level %logger:%method:%line - %message",
                        "time":"%date{yyyy-MM-dd HH:mm:ss.SSS}", "stream":"file"}%n
                    </pattern>
                </pattern>
            </providers>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
 
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 180天 -->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>{"log":"%date{yyyy-MM-dd HH:mm:ss.SSS}[%thread] %level %logger:%method:%line - %message",
                        "time":"%date{yyyy-MM-dd HH:mm:ss.SSS}", "stream":"file"}%n
                    </pattern>
                </pattern>
            </providers>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
 
    <!-- 系统模块日志级别控制 TODO 生产改成info -->
    <logger name="cn.ctyun.bigdata" level="debug"/>
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn"/>
 
    <!--系统调试日志-->
    <root level="info">
        <appender-ref ref="console"/>
    </root>
 
    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>
 
    <!--监控sql日志输出 TODO 生产可以改成OFF-->
    <logger name="jdbc.sqlonly" level="INFO" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.resultset" level="ERROR" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <!--  如想看到表格数据,将OFF改为INFO  -->
    <logger name="jdbc.resultsettable" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.connection" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.sqltiming" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.audit" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
</configuration>

 

0条评论
作者已关闭评论
刘****猛
7文章数
0粉丝数
刘****猛
7 文章 | 0 粉丝
原创

logback配置文件XML详解

2023-06-15 03:08:10
22
0

Logback 是一个基于 Java 的日志框架,被广泛应用于 Java 应用程序中。它是 Log4j 框架的改进版,提供了高度可配置的日志记录功能,具有灵活性和性能优势

Logback 包含了三个主要的组件:Logger、Appender 和 Layout。Logger 用于创建日志记录器,Appender 用于定义日志输出的目标,而 Layout 则定义了日志的格式。

以下是 Logback 的一些主要特点:

  1. 高度可配置:Logback 允许通过 XML 配置文件或者编程方式进行灵活的配置。你可以定义日志输出的级别、输出目标、格式等等。

  2. 继承 Log4j:Logback 被设计为 Log4j 的直接替代品,可以无缝迁移现有的 Log4j 配置文件到 Logback。

  3. 低开销:Logback 在设计上尽量减少对系统性能的影响,具有高效的异步日志记录机制和线程安全性。

  4. 支持多种输出:Logback 提供了多种 Appender,包括 ConsoleAppender、FileAppender、SocketAppender 等,可以将日志输出到控制台、文件、网络等不同目标。

  5. 灵活的过滤器:Logback 允许通过过滤器机制对日志进行过滤和处理,你可以根据日志级别、关键字等条件来过滤日志记录。

  6. SLF4J 兼容:Logback 与 SLF4J(Simple Logging Facade for Java)框架无缝集成,SLF4J 提供了一个统一的日志门面,使得应用程序可以方便地切换日志框架而不需要修改代码。

下面是logba.xml配置文件引入java后台的流程和配置详解:

1查找默认配置文件

logback默认会查找以下文件

logback-test.xml

logback.groovy

logback.xml

2 配置节点

2.1 根节点<configuration>

根节点包含以下属性

  • scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  • scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  • debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
<?xml version="1.0" encoding="UTF-8"?>
<!--        scan : 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true-->
<configuration scan="false" scanPeriod="60 seconds" debug="false">
</configuration>

 2.2 子节点<appender>

负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名。

appender实现类有以下几种。

1. ConsoleAppender 日志输出到控制台

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>stdout %d %p - %m%n</pattern>
    </encoder>
</appender>

2. FileAppender 日志添加到文件(静态文件)

  • <file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
  • <append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
  • <encoder>:对记录事件进行格式化。(具体参数稍后讲解 )
  • <prudent>:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
  <file>testFile.log</file>
  <append>true</append>
  <encoder>
     <pattern>%d %p - %m%n</pattern>
  </encoder>
</appender>

3. RollingFileAppender(动态文件)

RollingFileAppender滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。

  • <file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
  • <append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
  • <rollingPolicy>:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类。

rollingPolicy有一些策略:

class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy": 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。

  • <fileNamePattern>:必要节点,包含文件名及“%d”转换符,“%d”可以包含一个java.text.SimpleDateFormat指定的时间格式,如:%d{yyyy-MM}。
  • <maxHistory>:日志文件保留天数

class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy": 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动

  • <maxFileSize>:这是活动文件的大小,默认值是10MB。
  • <prudent>:当为true时,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有两个限制,1不支持也不允许文件压缩,2不能设置file属性,必须留空。
  • <triggeringPolicy >: 告知 RollingFileAppender 合适激活滚动。

class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy" 根据固定窗口算法重命名文件的滚动策略

  • <minIndex>:窗口索引最小值
  • <maxIndex>:窗口索引最大值,当用户指定的窗口过大时,会自动将窗口设置为12。
  • <fileNamePattern>:必须包含“%i”例如,假设最小值和最大值分别为1和2,命名模式为 mylog%i.log,会产生归档文件mylog1.log和mylog2.log。还可以指定文件压缩选项,例如,mylog%i.log.gz 或者 没有log%i.log.zip
<appender name="STDFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  <!-- 每天一归档 -->
  <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
   <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB,窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志 -->
   <maxFileSize>100MB</maxFileSize>   
   <maxHistory>60</maxHistory>
   <totalSizeCap>20GB</totalSizeCap>
   <minIndex>1</minIndex>
  <maxIndex>3</maxIndex>
</rollingPolicy>
<encoder>
  <pattern>%msg%n</pattern>
</encoder>
</appender>

2.3.root节点,必选节点

<root level="INFO">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="INFO_FILE"/>
    <appender-ref ref="WARN_FILE"/>
    <appender-ref ref="ERROR_FILE"/>
</root>

2.4 logger节点,可选节点

name:用来指定受此logger约束的某一个包或者具体的某一个类。

level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,

additivity:是否继承root节点,默认是true继承。默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。

2.5. 子节点<property>


用来定义变量值,它有两个属性name和value,通过<property>定义的值会被插入到logger上下文中,可以使“${}”来使用变量。

<property name="log.path" value="logs"></property>

2.6子节点<contextName>

  用来设置上下文名称,每个logger都关联到logger上下文,默认上下文名称为default。但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。

<configuration scan="true" scanPeriod="60 seconds" debug="false">
     <contextName>myApp</contextName>
    <!--其他配置省略-->
</configuration>

3.完整的Logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志上下文名称   -->
    <contextName>realtime-flink</contextName>
    <!-- 日志输出编码 -->
    <property name="log.charset" value="utf-8"/>
    <!-- 日志存放路径 -->
    <property name="log.path" value="logs"/>
    <!-- 日志输出格式 -->
    <property name="log.pattern"
              value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%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}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 180天 -->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>{"log":"%date{yyyy-MM-dd HH:mm:ss.SSS}[%thread] %level %logger:%method:%line - %message",
                        "time":"%date{yyyy-MM-dd HH:mm:ss.SSS}", "stream":"file"}%n
                    </pattern>
                </pattern>
            </providers>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
 
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 180天 -->
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>{"log":"%date{yyyy-MM-dd HH:mm:ss.SSS}[%thread] %level %logger:%method:%line - %message",
                        "time":"%date{yyyy-MM-dd HH:mm:ss.SSS}", "stream":"file"}%n
                    </pattern>
                </pattern>
            </providers>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
 
    <!-- 系统模块日志级别控制 TODO 生产改成info -->
    <logger name="cn.ctyun.bigdata" level="debug"/>
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn"/>
 
    <!--系统调试日志-->
    <root level="info">
        <appender-ref ref="console"/>
    </root>
 
    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>
 
    <!--监控sql日志输出 TODO 生产可以改成OFF-->
    <logger name="jdbc.sqlonly" level="INFO" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.resultset" level="ERROR" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <!--  如想看到表格数据,将OFF改为INFO  -->
    <logger name="jdbc.resultsettable" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.connection" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.sqltiming" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
 
    <logger name="jdbc.audit" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
</configuration>

 

文章来自个人专栏
个人文章
7 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0