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. Navigator.registerProtocolHandler All In One

    Navigator.registerProtocolHandler All In One Web API custom protocol URL Schemes URL Protocols https ...

  2. React render twice bug

    React render twice bug React bug constructor render twice bug update render twice bug StrictMode htt ...

  3. 云服务器Centos7部署Tomcat服务器

    目录 部署Tomcat服务器 1.安装JDK1.8 2.安装与启动tomcat 配置安全组(8080端口) 参考文章 部署Tomcat服务器 1.安装JDK1.8 JDK下载地址:https://ww ...

  4. 下载com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

    看别人都说在repo.maven.com下载,没想到竟然要登录 索性我直接在国内阿里云的镜像仓库下载好了,速度又快又方便 搜索aspectj 下载地址:https://maven.aliyun.com ...

  5. IHttpClientFactory 踩过的坑

    public class BasicUsageModel : PageModel { private readonly IHttpClientFactory _clientFactory; publi ...

  6. GET和POST两者的区别

    GET 和 POST 是 HTTP 协议中的两种发送请求的基本方法,对于前端开发者而言,几乎每天都在使用它们,再熟悉不过了,一般也都能说出几点两者的区别. 如果面试中被问到这个问题,先回答一下几点,肯 ...

  7. vue的el-select标签全选以及出现需要有禁用选项

    首先说一下遇到这种问题的解决思路吧,很简单先去https://element.eleme.cn/#/zh-CN 这个官网上找到对应的需求,然后就是拼接数据的问题. 以下是全选的例子: <el-s ...

  8. eclipse定制工具栏,修改工具栏

    目前eclipse定制工具栏的入口就是window- customize perspective,在弹出的窗口中选择Tool Bar Visibility,选择要在工具栏中显示的快捷图标.注:在Too ...

  9. Python处理不平衡数据

    参考文献 所谓的不平衡数据集指的是数据集各个类别的样本量极不均衡.以二分类问题为例,假设正类的样本数量远大于负类的样本数量,通常情况下通常情况下把多数类样本的比例接近100:1这种情况下的数据称为不平 ...

  10. IO、NIO、BIO的区别

    我们首先得明白什么是同步,异步,阻塞,非阻塞,只有这几个单个概念理解清楚了,然后在组合理解起来,就相对比较容易了. IO模型主要分类: 同步(synchronous) IO和异步(asynchrono ...