Logback学习

news2024/9/23 9:36:09

logback

1、logback介绍

Logback是由log4j创始人设计的另一个开源日志组件,性能比log4j要好。

lockback优点:

  • 内核重写、测试充分、初始化内存加载更小,这一切让logback性能和log4j相比有诸多倍的提升。
  • logback非常自然地直接实现了slf4j,这个严格来说算不上优点,只是这样,再理解slf4j的前提下会很容易理解logback,也同时很容易用其他日志框架替换logback。
  • logback有比较齐全的200多页的文档。
  • logback当配置文件修改了,支持自动重新加载配置文件,扫描过程快且安全,它并不需要另外创建一个扫描线程。
  • 支持自动去除旧的日志文件,可以控制已经产生日志文件的最大数量。

1.1 lockback模块

logback-core:其他两个模块的基础模块

logback-classic:它是log4j的改良版本,完整实现了SIf4j API

logback-access:访问模块与servlet容器继承提供通过Http来访问日志的功能

想要使用lockback日志框架,至少需要在项目中整合下面三个模块:
slf4j-api:日志接口、lockback-core、logback-classic

1.2 lockback组件

1) Logger:日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。

2) Appender:用于指定日志输出的目的地,可以是控制台、文件、数据库等等。

3) Layout:负责把事件转换成字符串,格式化的日志信息的输出。在logback中Layout对象被封装在encoder中。

1.3 lockback配置

logback会依次读取以下类型配置文件:

1) logback.grovy

2) logback-test.xml

3) logback.xml

1.4 lockback.xml配置文件解析

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <!-- 配置集中管理属性,可以直接使用该属性的值,格式:${name} -->
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"/>

    <!-- 日志输出格式:
         %-5level   : 级别从左显示5个字符宽度
         %d         : 日期
         %c         : 类的完整名称
         %M         : 方法名
         %L         : 行号
         %thread    : 线程名称
         %m         : 信息
         %n         : 换行 -->

    <!-- 格式化输出:%d表示日期, %thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息 %n是换行符 -->

    <!-- 控制台日志输出的appender -->
    <!-- 每个标签的编写都是使用类的set方法,如target标签对应setTarget方法 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 控制输出流对象默认是System.out,可以改为System.err,区别在于字体颜色不同 -->
        <target>System.err</target>
        <!-- 日志消息格式配置 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <!-- 文件输出的appender -->
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <file>path/to/log/file.log</file>

        <!-- 日志文件拆分规则 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名模式,按日期拆分,保留最近7天的日志文件 -->
            <fileNamePattern>path/to/log/file-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>

        <!-- 触发拆分的条件,按文件大小拆分,当日志文件大小达到10MB时触发拆分 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>10MB</maxFileSize>
        </triggeringPolicy>

        <!-- 日志消息格式配置 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <!-- root logger配置:只有日志的级别是大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录。 -->
    <root level="ALL">
	<!--TRACE(追踪): 提供比DEBUG更详细的信息,用于追踪代码执行流程。
        DEBUG(调试): 用于调试应用程序,提供详细的信息,通常不应该在生产环境中启用。
        INFO(信息): 提供一般性的信息,用于说明应用程序的运行状态,如启动、关闭等。
        WARN(警告): 表示潜在的问题,不会导致应用程序停止运行,但需要引起注意。
        ERROR(错误): 用于表示错误事件,可能导致应用程序无法正常执行。
        OFF(关闭): 用于关闭所有日志记录。
        ALL(所有): 记录所有的日志消息。-->

        <!-- 引用控制台和文件输出的appender,想输出到哪里就加哪个 -->
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>

</configuration>

2、lockback快速入门

需求:使用Logback日志框架,纪录系统的运行信息。

实现步骤:

  1. 导入Logback框架到项目中去。
    slf4j-api:日志接口、lockback-core、logback-classic
  2. 将Logback框架的核心配置文件logback.xml直接拷贝到src目录下(必须是Src下)
  3. 创建Logback框架提供的Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息。
public static final Logger LOGGER = LoggerFactory.getLogger("类名";

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1430876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Open3d计算点云法向量,可视化(代码)

Open3d使用estimate_normals函数来计算法向量。其参数设置Open3d提供了3中参数搜索的方法&#xff08;所有计算的法向量模长为1&#xff09;&#xff1a; open3d.geometry.KDTreeSearchParamKNN(knn20) # 计算近邻的20个点 open3d.geometry.KDTreeSearc…

SVDiff: Compact Parameter Space for Diffusion Fine-Tuning——【论文笔记】

本文发表于ICCV 2023 论文地址&#xff1a;ICCV 2023 Open Access Repository (thecvf.com) 官方代码&#xff1a;mkshing/svdiff-pytorch: Implementation of "SVDiff: Compact Parameter Space for Diffusion Fine-Tuning" (github.com) 一、Introduction 最近几…

Apache POl Excel

目录 介绍 Apache POl的应用场景&#xff1a; 入门使用 通过POI创建Excel文件并且写入文件内容 通过POI读取Excel文件中的内容 介绍 Apache POl是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用POI在Java程序中对Miscrosoft O…

AI应用开发-Visual Studio Code及Remote Development插件远程开发

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享&#xff0c;包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

由vscode自动升级导致的“终端可以ssh服务器,但是vscode无法连接服务器”

问题描述 简单来说就是&#xff0c;ssh配置没动&#xff0c;前两天还可以用vscode连接服务器&#xff0c;今天突然就连不上了&#xff0c;但是用本地终端ssh可以顺利连接。 连接情况 我的ssh配置如下&#xff1a; Host gpu3HostName aaaUser zwx现在直接在终端中进行ssh&am…

【数位dp】【动态规划】【KMP】1397. 找到所有好字符串

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 LeetCode1397. 找到所有好字符串 给你两个长度为 n 的字符串 s1 和 s2 &#xff0c;以及一个字符串 evil 。请你返回 好字符串 的数目。 好字符串 的定义为&#x…

从零开始:构建高效的 JMeter 集群压测环境

当面对大量用户模拟和性能测量需求时&#xff0c;单台计算机运行 JMeter 往往显得力不从心。因此&#xff0c;构建一个多节点的JMeter集群成为了一种提升测试性能的有效途径。接下来&#xff0c;本文将详细介绍如何组建和配置一个JMeter测试集群。 一、准备工作&#xff1a;服…

深入理解直接内存和零拷贝

目录 直接内存深入辨析 堆外内存的优点和缺点 零拷贝 什么是零拷贝? Linux的I/O机制与DMA 传统数据传送机制 Linux支持的零拷贝 mmap内存映射 sendfile splice Java生态圈中的零拷贝 NIO提供的内存映射MappedByteBuffer NIO提供的sendfile Kafka中的零拷贝 直接…

npm ERR! code CERT_HAS_EXPIRED

执行npm i报错&#xff1a; npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/react-redux failed, reason: connect ETIMEDOUT 104.16.2.35:443 npm ERR! network This is a problem rel…

LangChain 79 LangGraph 从入门到精通一

LangChain系列文章 LangChain 60 深入理解LangChain 表达式语言23 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 61 深入理解LangChain 表达式语言24 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 62 深入理解Lang…

Python爬虫Scrapyd项目部署详细教程--最完整版本

文章目录 scrapy项目部署1.scrapyd部署工具介绍&#xff08;1&#xff09;环境安装 2.scrapy项目部署&#xff08;1&#xff09;配置需要部署的项目&#xff08;2&#xff09;管理scrapy项目&#xff08;3&#xff09;启动项目&#xff08;4&#xff09;关闭项目&#xff08;5&…

【Transformer 】 Hugging Face手册-推理管道 (04/10)

一、说明 这里是Hugging Face手册第四部分&#xff0c;如何使用推理管道&#xff1b;即使您没有特定模式的经验或不熟悉模型背后的底层代码&#xff0c;您仍然可以使用它们通过 pipeline ()进行推理&#xff01; 二、推理管道 pipeline ()可以轻松使用Hub中的任何模型来推理任…

Go语言的100个错误使用场景(11-20)|项目组织和数据类型

前言 大家好&#xff0c;这里是白泽。 《Go语言的100个错误以及如何避免》 是最近朋友推荐我阅读的书籍&#xff0c;我初步浏览之后&#xff0c;大为惊喜。就像这书中第一章的标题说到的&#xff1a;“Go: Simple to learn but hard to master”&#xff0c;整本书通过分析100…

Channel事件管理类实现(模块三)

目录 类功能 类定义 类实现 类功能 因为涉及到后续一些实现&#xff0c;因此后续可能会进行修改 类定义 class Channel { private:uint32_t _events; // 当前需要监控的事件uint32_t _revents; // 当前连接触发的事件using EventCallback std::function<void()>;E…

自学Java的第58,59天

网络通信 网络通信三要素&#xff1a;ip地址&#xff0c;端口号&#xff0c;协议 ip地址 常用方法 写法 端口号 协议 UDP通信 快速入门 写法&#xff08;客户端&#xff09; &#xff08;服务端&#xff09; UDP通信 多发多收 TCP通信 写法&#xff08;客户端&#xff09; …

Node.js版本管理工具之_Volta

Node.js包管理工具之_Volta 文章目录 Node.js包管理工具之_Volta1. 官网1. 官网介绍2. 特点1. 快( Fast)2. 可靠(Reliable)3. 普遍( Universal) 2. 下载与安装1. 下载2. 安装3. 查看 3. 使用1. 查看已安装的工具包2. 安装指定的node版本3.切换项目中使用的版本 1. 官网 1. 官网…

网络协议梳理

1 引言 在计算机网络中要做到有条不紊地交换数据&#xff0c;就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。这里所说的同步不是狭义的&#xff08;即同频或同频同相&#xff09;而是广义的&#xff0c;即在一定的条件下应当发生什…

大数据本地环境搭建03-Spark搭建

需要提前部署好 Zookeeper/Hadoop/Hive 环境 1 Local模式 1.1 上传压缩包 下载链接 链接&#xff1a;https://pan.baidu.com/s/1rLq39ddxh7np7JKiuRAhDA?pwde20h 提取码&#xff1a;e20h 将spark-3.1.2-bin-hadoop3.2.tar.gz压缩包到node1下的/export/server目录 1.2 解压压…

镜舟科技客户成功团队负责人孟庆欢:湖仓一体将成为数据架构的新范式

大数据产业创新服务媒体 ——聚焦数据 改变商业 随着数字化的概念逐步深入不同领域企业的运营中&#xff0c;业务形态和数字化路径也越来越丰富。这也为企业数据处理、储存的方式提出了更多要求。对于企业&#xff0c;尤其是数据驱动型企业来说&#xff0c;需要强大的解决方案…

LNMP.

一.mysl配置 1.安装mysql yum install mysql-server -y 2.进入mysql配置文件目录 cd /etc/my.cnf.d3.编辑mysql配置文件 vim mysql-server.cnf 在[mysqld]中添加: character-set-serverutf84.启动mysql服务 systemctl start mysqld5.登入mysql mysql 6.创建数据库 cre…