logback.xml日志属性简单使用介绍

logback 的三部分结构:appender、logger、root
(1)appender
    encoder:确定将事件写入基础的方式OutputStreamAppender
    filter:过滤此日志文件只记录xx级别的日志
    rollingPolicy:日志记录器的滚动策略
(2)logger
    某模块路径的打印级别配置

(3)root
    打印到控制台
1,
appender
<appender>是<configuration>的子节点,是负责写日志的组件。
<appender>有两个必要属性name和class。name指定appender名称,class指定appender的全限定名。
如:控制台输出:<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"></appender>
    生成日志文件:appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"></appender>
class中的全限定名介绍
(1)ConsoleAppender :ConsoleAppender用于控制台日志输出,<encoder>的作用是将日志格式化,转换为字节数组,并将转换后的字节数组输出到OutputStream

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
    </encoder>
  </appender>
  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

(2)FileAppender : FileAppender用于将日志以文件形式保存起来,<timestamp>可以用这个属性来记录这个配置文件的解析时间(我暂时还想不到有什么用),
<file>记录文件的地址和文件名

<configuration>
  <!-- Insert the current time formatted as "yyyyMMdd'T'HHmmss" under
       the key "bySecond" into the logger context. This value will be
       available to all subsequent configuration elements. -->
  <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <!-- use the previously created timestamp to create a uniquely
         named log file -->
    <file>log-${bySecond}.txt</file>
    <encoder>
      <pattern>%logger{35} - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>

(3)RollingFileAppender:RollingFileAppender是对FileAppender的一个扩展。相较于它的父类,它的主要作用是滚动记录日志。
RollingFileAppender有两个重要的子组件:RollingPolicy和 TriggeringPolicy。RollingPolicy决定日志滚动方式,TriggeringPolicy决定日志滚动的触发条件。
(其实RollingPolicy也可以定义滚动的触发条件)
而RollingPolicy滚动策略包括以下几种:
(1),TimeBasedRollingPolicy: 基于时间的滚动策略。这个可能是最常用的滚动策略。

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- daily rollover -->
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>

      <!-- keep 30 days' worth of history capped at 3GB total size -->
      <maxHistory>30</maxHistory>
      <totalSizeCap>3GB</totalSizeCap>

    </rollingPolicy>

    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender> 

  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>

(2),SizeAndTimeBasedRollingPolicy: SizeAndTimeBasedRollingPolicy是基于时间和文件大小的滚动策略(自己项目常用

<configuration>
  <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>mylog.txt</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
       <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
       <maxFileSize>100MB</maxFileSize>    
       <maxHistory>60</maxHistory>
       <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>

  <root level="DEBUG">
    <appender-ref ref="ROLLING" />
  </root>

</configuration>

<totalSizeCap>限定的是所有的归档日志文件,而<maxFileSize>限定的则是单个日志文件
(3),FixedWindowRollingPolicy
基于窗口大小的滚动策略。
这个听起来可能有点难理解,其实说白了就是将归档日志文件到最大了就写到下一个文件里,而窗口大小就是最多允许多少份日志文件。
官方文档示例配置如下
(4),SizeBasedTriggeringPolicy
SizeBasedTriggeringPolicy其实是TriggeringPolicy(决定什么时候滚动),好像目前暂时也只有这么一个TriggeringPolicy。
主要作用是归档日志文件到达一定大小之后进行日志滚动。
根据网上的说法,TimeBasedRollingPolicy和SizeBasedTriggeringPolicy冲突,不能同时使用。
其实使用SizeAndTimeBasedRollingPolicy就可以同时满足两个需求了

链接:https://www.jianshu.com/p/5f79f69fa24e

2,

loger
用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。<loger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。
name:用来指定受此loger约束的某一个包或者具体的某一个类。
level:用来设置打印级别(日志级别),大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前loger将会继承上级的级别。
addtivity:是否向上级loger传递打印信息。默认是true。

<loger>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个loger。

<loger>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个loger。
如:<logger name="test"  level="DEBUG" additivity="false">
        <appender-ref ref="STDOUT"/> --STDOUT就是1中的<appender>标签中的name="STDOUT"
    </logger>
    <logger name="com.caf.cxxb.domain.mybatisDao" level="info" />--中的name属性的值是对应dao层mapper.xml的路径,打印sql日志
3,

root
也是<loger>元素,但是它是根loger。只有一个level属性,应为已经被命名为"root".
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。默认是DEBUG。

<root>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个loger。
如:<!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root> 

 

 

要在logback.xml中增加属性,可以按照以下步骤进行操作: 1. 打开logback.xml文件,该文件通常位于项目根目录的src/main/resources目录下。 2. 定位到合适的位置,添加需要的属性属性可以用来配置日志输出的格式、输出级别等信息。例如,我们可以添加一个名为"myAppName"的属性,用来配置应用程序的名称。 3. 在logback.xml中,可以使用property元素来定义属性。示例如下: ```xml <configuration> <property name="myAppName" value="My Application" /> ... </configuration> ``` 在这个示例中,我们定义了一个名为"myAppName"的属性,并将其值设置为"My Application"。 4. 在适当的地方使用属性。可以使用${}语法将属性引用到日志记录器的配置中。示例如下: ```xml <configuration> <property name="myAppName" value="My Application" /> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${myAppName} [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> ... </configuration> ``` 在这个示例中,我们在consoleAppender的pattern属性使用了myAppName属性,以在日志输出中显示应用程序的名称。 5. 保存logback.xml文件并重新运行应用程序。现在,日志使用新添加的属性配置进行输出。 通过以上步骤,就可以在logback.xml中增加属性,并使用这些属性来配置日志记录器的行为。这样,我们可以灵活地调整日志输出的格式和级别,以满足应用程序的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值