logback 日志基础配置

摘要: 

        Logback 旨在作为流行的 log4j 项目的后继者。它是由 log4j 的创始人 CekiGülcü设计的。它以在设计工业强度测井系统方面获得的十年经验为基础。与所有现有的日志记录系统相比,最终的产品(即 logback)速度更快,占用空间更小,有时间隔很大。同样重要的是,logback 提供了其他日志系统中缺少的独特而实用的功能

 使用 logback-test.xml 或 logback.xml 进行自动配置

例:

<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <!-- 属性根据自身需求设置,可以是系统变量,配置参数(需要引入配置文件),亦可以如下 -->
    <property name="APP_NAME" value="你的应用名" />
    <!--应用业务日志统一打印到 /root/${APP_NAME}/logs下面 -->
    <property name="LOG_PATH" value="/home/admin/${APP_NAME}/logs" />
 

    <appender name="APPLICATION"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/application.log</file>
        <encoder>
            <pattern>
                %highlight(%date{yyyy-MM-dd HH:mm:ss.SSS}) %yellow(%-5level) %green(%logger{36}).%gray(%M)-%boldMagenta(%line) - %msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxHistory>7</maxHistory>
            <maxFileSize>50MB</maxFileSize>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
    </appender>


    <root level="INFO">
        <appender-ref ref="APPLICATION" />
    </root>

</configuration>

 什么是 Appender?

Logback 将编写日志记录事件的任务委托给称为附加程序的组件。Appender必须实现ch.qos.logback.core.Appender接口。该接口的主要方法总结如下:

package ch.qos.logback.core;
  
import ch.qos.logback.core.spi.ContextAware;
import ch.qos.logback.core.spi.FilterAttachable;
import ch.qos.logback.core.spi.LifeCycle;
  

public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachable {

  public String getName();
  public void setName(String name);
  void doAppend(E event);
  
}

appender语法结构: 

1、属性:appender标签中包含两个强制需要的属性:name、class

①name:为这个appender起一个唯一标识的名称。与appender-ref中的值相对应。以引用appender。

②class:一个Appender类实例的完整类名称。

2、appender标签中可以包含0个或者1个【layout】标签。0个或者多个【encoder】标签,0个或者多个 【filter】标签。

3、除了上面3个公共标签之外,还可以包含任意多个与appender的class属性所在的类中的对应的属性标 签。准确的说是setXXX()的XXX标签。他就是利用了Java的反射机制

 Appender 最终负责输出日志记录事件

但是Appender 可以将事件的实际格式委托给LayoutEncoder对象。每个布局/编码器都与一个且只有一个附加程序(称为拥有附加程序)相关联。一些追加程序具有内置或固定的事件格式。因此,它们不需要布局/编码器。例如, SocketAppender只是将记录事件串行化,然后再通过网络传输它们 

解读: 

<encoder>
     <pattern>
       %highlight(%date{yyyy-MM-dd HH:mm:ss.SSS}) %yellow(%-5level) %green(%logger{36}).%gray(%M)-%boldMagenta(%line) - %msg%n
     </pattern>
     <charset>UTF-8</charset>
</encoder> 

pattern:设置日志输出格式+样式

语法:%样式() 

例子:

        %highlight(%date{yyyy-MM-dd HH:mm:ss.SSS})   作用:高亮 根据日志级别不同

        %yellow(%-5level)  作用:黄色显示日志级别

颜色字符编码加粗颜色字符编码
  • %black 黑色

  • %red 红色

  • %green 绿色

  • %yellow 黄色

  • %blue 蓝色

  • %magenta 洋红色

  • %cyan 青色

  • %white 白色

  • %gray 灰色

  • %boldRed

  • %boldGreen

  • %boldYellow

  • %boldBlue

  • %boldMagenta

  • %boldCyan

  • %boldWhite

  • %highlight 高亮色

设置日志输出级别以及使用对应的 Appender 

    <root level="INFO">
<!--        <appender-ref ref="CONSOLE" />-->
        <appender-ref ref="APPLICATION" />
    </root>

日志输出效果 

常见问题 

问题1: 分割日志文件不正确,超过限定大小或过期后不会清理日志文件                                  原因:日志文件存放路径变量无法引用到(环境变量,配置文件) 

  

       

参考资料

  1. 日志logback格式解析
  2. logback:logback和slf4j中的:appender、logger、encoder、layout
  3. logback appender详解
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值