logback简介及配置文件说明

@author:wangyq

@date:2021年3月31日

logback简介

​ Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch

  1. logback的结构:主要由三个模块组成:
    • logback-core // 基础模块,其他模块基于此

    • logback-classic // 它是log4j的一个改良版本,同时它完整实现了slf4j API,可以更换成其它日志系统,如log4j

    • logback-access // 访问模块与Servlet容器集成提供通过Http来访问日志的功能

  2. 用它取代log4j的理由在于以下优势:

    ​ 做到了更快的实现、非常充分的测试、很自然地实现了SLF4、非常详尽的官方文档、自动重新加载配置文件、Lilith是log事件的观察者,和log4j的chainsaw类似、谨慎的模式和非常友好的恢复(可以实现多个线程同时写一个日志文件)、配置文件可以处理不同的情况、Filters(过滤器)、SiftingAppender、自动压缩已经打出来的log文件、堆栈树带有包版本、自动去除旧的日志文件等。

logback.xml配置文件详解

  1. 配置文件示例
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!-- 配置文件修改时重新加载,默认true -->
    <configuration scan="true"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="CATALINA_BASE" value="**/logs"></property> <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder charset="UTF-8">
    <!-- 输出日志记录格式 -->
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    </appender> <!-- 第一个文件输出,每天产生一个文件 -->
    <appender name="FILE1" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!-- 输出文件路径+文件名 -->
    <fileNamePattern>${CATALINA_BASE}/aa.%d{yyyyMMdd}.log</fileNamePattern>
    <!-- 保存30天的日志 -->
    <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder charset="UTF-8">
    <!-- 输出日志记录格式 -->
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    </appender> <!-- 第二个文件输出,每天产生一个文件 -->
    <appender name="FILE2" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${CATALINA_BASE}/bb.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${CATALINA_BASE}/bb.%d{yyyyMMdd}.log</fileNamePattern>
    <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder charset="UTF-8">
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    </appender> <appender name="CUSTOM" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${CATALINA_BASE}/custom.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!-- daily rollover -->
    <fileNamePattern>${CATALINA_BASE}/custom.%d{yyyy-MM-dd}.log</fileNamePattern>
    <!-- keep 30 days' worth of history -->
    <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder charset="UTF-8">
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    </appender> <!-- 设置日志输出级别 -->
    <root level="ERROR">
    <appender-ref ref="CONSOLE" />
    </root>
    <logger name="file1" level="DEBUG">
    <appender-ref ref="FILE1" />
    </logger>
    <logger name="file1" level="INFO">
    <appender-ref ref="FILE2" />
    </logger>
    <!-- 自定义logger -->
    <logger name="custom" level="INFO">
    <appender-ref ref="CUSTOM" />
    </logger>
    </configuration>
  2. 配置文件说明

    ​ 一个元素

    ​ 0或多个

    ​ 0或多个

  1. logback配置文件加载说明

    logback在启动时:

    1. 在 classpath 中寻找 logback-test.xml文件
    2. 如果找不到 logback-test.xml,则在 classpath 中寻找 logback.groovy 文件
    3. 如果找不到 logback.groovy,则在 classpath 中寻找 logback.xml文件
    4. 如果上述的文件都找不到,则 logback 会使用 JDK 的 SPI 机制查找 META-INF/services/ch.qos.logback.classic.spi.Configurator 中的 logback 配置实现类,这个实现类必须实现 Configuration 接口,使用它的实现来进行配置
    5. 如果上述操作都不成功,logback 就会使用它自带的 BasicConfigurator 来配置,并将日志输出到 console
  2. 打印级别

    TRACE<DEBUG<INFO<WARN<ERROR,默认DEBUG

logback快速上手

  1. 依赖的jar包:

    slf4j-api

    logback-core

    logback-classic

       <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
    </dependency>
    <dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.0.11</version>
    </dependency>
    <dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.0.11</version>
    </dependency>

    【注】其中slf4j-api不是logback的一部分,是另一个项目,通常结合使用

  2. 代码示例(两种):
    // 第一种,直接声明一个对象
    public class Slf4JLoggerTest1 {
    private static final Logger logger = LoggerFactory.getLogger(SimpleDemo.class);
    public static void main(String[] args) {
    logger.info("Hello,tese1, this is a line of log message logged by Logback");
    }
    } // 第二种,在类的配置上添加@slf4j注解(**借助lombok实现,原理同第一种**)
    @Slf4j
    public class Slf4JLoggerTest2 {
    public static void main(String[] args) {
    log.info("Hello,tese2, this is a line of log message logged by Logback");
    }
    }

参考资料:

​ [1] logback配置详解https://segmentfault.com/a/1190000008315137

​ [2] logback的使用和logback.xml详解https://www.cnblogs.com/warking/p/5710303.html

Logback简介及配置文件logback.xml详解的更多相关文章

  1. Tomcat配置(二):tomcat配置文件server.xml详解和部署简介

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. Tomcat(二):tomcat配置文件server.xml详解和部署简介

    Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务 ...

  3. Maven配置文件setting.xml详解

    注:本文来源于:大话JAVA的那些事 <Maven配置文件setting.xml详解> <?xml version="1.0" encoding="UT ...

  4. Maven全局配置文件settings.xml详解(转)

    Maven全局配置文件settings.xml详解   目录 一.概要 1.settings.xml的作用2.settings.xml文件位置3.配置的优先级 二.settings.xml元素详解 1 ...

  5. maven全局配置文件settings.xml详解

    概要 settings.xml有什么用? 如果在Eclipse中使用过Maven插件,想必会有这个经验:配置settings.xml文件的路径. settings.xml文件是干什么的,为什么要配置它 ...

  6. Tomcat 配置文件server.xml详解

    前言 Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛.server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的 ...

  7. JavaEE学习之Maven配置文件pom.xml详解(转)

    一.引言 (本文转载自:http://blog.csdn.net/longeremmy/article/details/9670619) 使用maven有一些时间了,一直没有好好将pom配置文件每个节 ...

  8. struts2之配置文件struts.xml详解

    struts配置文件 struts.xml配置参数详解 struts.xml中很大一部分配置默认配置就好了 但是有些还是需要做了解  以便于理解 和修改 <?xml version=" ...

  9. [转]maven全局配置文件settings.xml详解

    概要 settings.xml有什么用? 如果在Eclipse中使用过Maven插件,想必会有这个经验:配置settings.xml文件的路径. Paste_Image.png settings.xm ...

随机推荐

  1. Creative Commons : CC (知识共享署名 授权许可)

    1 https://creativecommons.org/      Keep the internet creative, free and open. Creative Commons help ...

  2. SwiftUI render WKWebView

    SwiftUI render WKWebView // // ContentView.swift // webview-app // // Created by 夏凌晨 on 2020/10/27. ...

  3. 如何关闭 iPad Pro 自动开启 wifi 和蓝牙

    如何关闭 iPad Pro 自动开启 wifi 和蓝牙 为了省电,明明关闭了,但是发现每天都会自动开启,什么鬼设计 https://support.apple.com/zh-cn/HT208086 h ...

  4. nasm astrstr函数 x86

    xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export as ...

  5. windows 设置右键菜单

    编辑注册表 在文件 右键菜单中添加 xx.reg: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\vscode] &q ...

  6. Renice INC:不同颜色的酒帽所代表的意义

    酒帽就是酒瓶上方的热缩胶帽/锡帽/蜡封,也就是开瓶前要割掉的那一层保护物,所有的法国酒在酒帽上,都会有一个圆形贴纸,除了有不同颜色外,上面还有一串号码,有可能很多人在喝酒时都不会对这个酒帽有更多的在意 ...

  7. C语言指针基本知识

    对程序进行编译的时候,系统会把变量分配在内存单位中,根据不同的变量类型,分配不同的字节大小.比如int整型变量分配4个字节,char字符型变量分配1个字节等等.被分配在内存的变量,可以通过地址去找到, ...

  8. idea 如何在新窗口中打开项目

    参考链接:https://blog.csdn.net/dreamfly88/article/details/52240188 以前一直再用eclipse,可以同时打开好几个项目,idea中同样支持打开 ...

  9. Java线程池 ExecutorService了解一下

    本篇主要涉及到的是java.util.concurrent包中的ExecutorService.ExecutorService就是Java中对线程池的实现. 一.ExecutorService介绍 E ...

  10. TERSUS无代码开发(笔记05)-简单实例电脑端页面设计

    案例笔记电脑端页面设计   1.新建项目(请假管理qjgl)   2.开发软件界面介绍(常用的功能按键)      3.目录中显示元件对象      4.对元件对象的操作主要方式是双击(双击哪个元件, ...