主流日志框架Logback与Log4j2

一、Logback

1、介绍

Logback是由log4j创始人设计的又一个开源日志组件。

Logback当前分成三个模块:logback-core,logback- classic和logback-access

logback-core是其它两个模块的基础模块,类似与springframework

logback-classic是log4j的一个改良版本。此外logback-classic完整实现SLF4J API。使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。

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

2、Logback中的组件

Logger:日志的记录器,主要用于存放日志对象,也可以定义日志类型、级别

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

Layout:负责把事件转换成字符串,格式化的日志信息的输出。在Logback中Layout对象被封装在encoder中。也就是说我们未来使用的encoder其实就是Layout

3、基础日志输出格式
%-10level 级别:案例为设置10个字符,左对齐
%d{yyyy-MM-dd HH:mm:ss.SSS}:日期
%c:当前类全限定名
%M:当前执行日志的方法
%L:行号
%thread:线程名称
%m或者%msg:信息
%n:换行
4、基础配置文件格式
<?xml version="1.0" encoding="UTF-8"?><!--scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。--><configuration scan="true" scanPeriod="60 seconds"><!--定义变量 ,可被插入到logger上下文中,此处定义日志文件的存储地址--><property name="log.base.run" value="../logs/sshblog"/><!--JMX管理,logback支持使用JMX随时重载logback.xml或者单独设置某个package的levelscan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。--><jmxConfigurator/><!--输出到控制台--><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><!--日志格式化--><encoder><pattern>[sshblog]|%-20(%date|[%thread])|%-1level|%logger{80}| %msg%n</pattern></encoder><!--字符串System.out(默认)或者System.err--><target>System.out</target></appender><!--滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件--><appender name="logfileRun" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- <Encoding>UTF-8</Encoding> --><!--被写入的文件名--><File>${log.base.run}.log</File><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">    <!--当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类,此处class为最常用的,其他的自己去看--><FileNamePattern>${log.base.run}_%d{yyyyMMdd}-%i.log.zip</FileNamePattern>    <!--必要节点,可以为活动文件和归档文件指定不同位置,当前日志总是记录到file指定的文件(活动文件),活动文件的名字不会改变--><MaxHistory>15</MaxHistory><!--可选节点,可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。--><TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><!--查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动--><MaxFileSize>50MB</MaxFileSize></TimeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder><pattern>[sshblog]|%-20(%date|[%thread])|%-1level| %msg [%file:%line]%n</pattern></encoder></appender><logger name="com.test" level="trace" additivity="true"><!--用来设置某一个包或具体的某一个类的日志打印级别、以及指定appender。loger仅有一个name属性,一个可选的level和一个可选的addtivity属性。name: 用来指定受此loger约束的某一个包或者具体的某一个类。level: 用来设置打印级别,大小写无关。addtivity: 是否向上级loger传递打印信息。默认是true。经测试,如果此处配置为true,且同一个appender同时添加在此和root,则会打印两次,如果根元素没有配置,则无论配置为true还是false,都只打印一次--><appender-ref ref="stdout"/> <!--可以包含零个或多个appender-ref元素,标识这个appender将会添加到这个logger--></logger><logger name="com.xrom.ssh" level="error" additivity="true"><appender-ref ref="stdout"/></logger><root level="trace"><!--它也是loger元素,但是它是根loger,是所有loger的上级。只有一个level属性,因为name已经被命名为"root",且已经是最上级了。level: 用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF,不能设置为INHERITED或者同义词NULL。默认是DEBUG。--><appender-ref ref="logfileRun"/><!--<appender-ref ref="stdout" />--></root></configuration>

二、Log4j2

1、介绍

Apache Log4j 2是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些问题。

被誉为是目前最优秀的Java日志框架

2、特征

性能提升

Log4j2包含基于LMAX Disruptor库的下一代异步记录器

在多线程场景中,异步记录器的吞吐量比Log4j 1.x和Logback高18倍,延迟低

自动重新加载配置

与Logback一样,Log4j2可以在修改时自动重新加载其配置

与Logback不同,它会在重新配置发生时不会丢失日志事件

高级过滤

与Logback一样,Log4j2支持基于Log事件中的上下文数据,标记,正则表达式和其他组件进行过滤

过滤器还可以与记录器关联。与Logback不同,Log4j2可以在任何这些情况下使用通用的Filter类

无垃圾机制

在稳态日志记录期间,Log4j2 在独立应用程序中是无垃圾的

在Web应用程序中是低垃圾。

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

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

相关文章

AWTK fscript 中的 value 扩展函数

fscript 是 AWTK 内置的脚本引擎&#xff0c;开发者可以在 UI XML 文件中直接嵌入 fscript 脚本&#xff0c;提高开发效率。本文介绍一下 fscript 中的 ** value 扩展函数 ** value 扩展函数 value 相关的辅助函数。 1. value_is_valid 判断 value 是否有效。 原型 value_i…

虚拟背景扣像SDK解决方案,电影级抠像技术

美摄科技&#xff0c;作为影像技术领域的领航者&#xff0c;凭借其革命性的虚拟背景抠像SDK解决方案&#xff0c;正以前所未有的方式&#xff0c;重新定义电影级背景抠像技术&#xff0c;让直播与视频制作迈入全新境界。 电影级抠像技术&#xff0c;重塑视觉盛宴 美摄科技的虚…

ArcGIS属性表汉字转拼音

直接复制粘贴现成代码&#xff1a; # -*- coding: utf-8 -*-import arcpyfrom arcpy import envimport osimport pypinyin import sys# 不带声调皿stylepypinyin.NORMAL)def pinyin(word): s for i in pypinyin.pinyin(word, stylepypinyin.NORMAL): s .join(…

SpringBoot开发——整合Redis

文章目录 1、创建项目&#xff0c;添加Redis依赖2、创建实体类Student3、创建Controller4、配置application.yml5、整合完成 Redis ( Remote Dictionary Server &#xff09;是一个开源的内存数据库&#xff0c;遵守 BSD 协议&#xff0c;它提供了一个高性能的键值&#xff08…

PHP一键寄送尽在掌中快递寄件小程序

一键寄送尽在掌中 —— 快递寄件小程序全体验 &#x1f31f; 开篇&#xff1a;告别繁琐&#xff0c;拥抱便捷新纪元 还在为寄快递而烦恼吗&#xff1f;排队等待、填写繁琐的单据、等待快递员上门...这些统统成为过去式&#xff01;“一键寄送尽在掌中快递寄件小程序”。它就像…

mysql 日志恢复

一:查看是否开启binlog日志 show variables like log_%; 二&#xff1a;查看日志存放目录&#xff1a; SHOW VARIABLES LIKE %datadir%;三&#xff1a;查看日志列表 show binary logs; #获取binlog文件列表 show master status&#xff1b; #查看当前正在写入的binlog文件四…

【深度学习】【OnnxRuntime】【C++】模型转化、环境搭建以及模型部署的详细教程

【深度学习】【OnnxRuntime】【C】模型转化、环境搭建以及模型部署的详细教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【OnnxRuntime】【C】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转onnxWindows平…

图像检测【YOLOv5】——深度学习

Anaconda的安装配置&#xff1a;&#xff08;Anaconda是一个开源的Python发行版本&#xff0c;包括Conda、Python以及很多安装好的工具包&#xff0c;比如&#xff1a;numpy&#xff0c;pandas等&#xff0c;其中conda是一个开源包和环境管理器&#xff0c;可以用于在同一个电脑…

桥接模式详解和分析JDBC中的应用

&#x1f3af; 设计模式专栏&#xff0c;持续更新中&#xff0c; 欢迎订阅&#xff1a;JAVA实现设计模式 &#x1f6e0;️ 希望小伙伴们一键三连&#xff0c;有问题私信都会回复&#xff0c;或者在评论区直接发言 桥接模式 文章目录 桥接模式桥接模式的四个核心组成&#xff1a…

How to install OpenAI Universe without getting error code 1 on Windows?

题意&#xff1a;怎样在Windows上安装OpenAI Universe并避免出现错误代码1 问题背景&#xff1a; When I try to install OpenAi Universe on my Windows machine via python pip I get following stacktrace: 当我尝试通过 python pip 在我的 Windows 机器上安装 OpenAI Uni…

S-Procedure的基本形式及使用

理论 Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- \textbf{Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- } Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- tions w.r.t. x ∈ C M 1 \mathbf{x}\in\mathbb{C}^M\times1 x…

dify的介绍

官方网址&#xff1a;https://dify.ai Dify 是一个开源的大型语言模型&#xff08;LLM&#xff09;应用开发平台&#xff0c;它提供了一个直观的用户界面&#xff0c;结合了AI工作流、检索-生成&#xff08;RAG&#xff09;管道、智能体&#xff08;Agent&#xff09;、模型管理…

Grafana 可视化配置

Grafana 是什么 Grafana 是一个开源的可视化和监控工具&#xff0c;广泛用于查看和分析来自各种数据源的时间序列数据。它提供了一个灵活的仪表盘&#xff08;dashboard&#xff09;界面&#xff0c;用户可以通过它将数据源中的指标进行图表化展示和监控&#xff0c;帮助分析趋…

国网B接口 USC安防平台 海康摄像机配置

国网B接口海康摄像机配置介绍 如下以海康DS-NACN6432I-GLN摄像机为例&#xff0c;配置国网B接口设备接入流程&#xff0c;海康摄像机的固件版本为 V5.6.11 build 210109 210107。该设备为球机&#xff0c;支持国网B接口云台控制功能。图标编号可以对应二者的配置。 注意 同一…

dify安装(传统docker-compose)

克隆 Dify 代码仓库 克隆 Dify 源代码至本地环境。 git clone --depth 1 https://github.com/langgenius/dify.git启动 Dify 进入 Dify 源代码的 Docker 目录 cd dify/docker-legacy启动 Docker 容器 docker-compose up -d运行命令后&#xff0c;你应该会看到类似以下的输…

Unity3D类似于桌面精灵的功能实现

前言&#xff1a; 由于最近在做游戏魔改&#xff0c;很多功能在游戏里面没法实现&#xff08;没错&#xff0c;说的就是排行榜&#xff09;&#xff0c;所以准备用Unity3D开发一个类似于桌面精灵的功能部件&#xff0c;实现效果如下&#xff1a; PS&#xff1a;有需要定制的老…

408算法题leetcode--第三天

1672. 最富有客户的资产总量 1672. 最富有客户的资产总量思路&#xff1a;双重循环遍历二维数组时间复杂度&#xff1a;O(mn)&#xff1b;空间&#xff1a;O(1) class Solution { public:int maximumWealth(vector<vector<int>>& accounts) {int ret 0;for(…

Java | Leetcode Java题解之第403题青蛙过河

题目&#xff1a; 题解&#xff1a; class Solution {public boolean canCross(int[] stones) {int n stones.length;boolean[][] dp new boolean[n][n];dp[0][0] true;for (int i 1; i < n; i) {if (stones[i] - stones[i - 1] > i) {return false;}}for (int i 1…

使用 Milvus、vLLM 和 Llama 3.1 搭建 RAG 应用

vLLM 是一个简单易用的 LLM 推理服务库。加州大学伯克利分校于 2024 年 7 月将 vLLM 作为孵化项目正式捐赠给 LF AI & Data Foundation 基金会。欢迎 vLLM 加入 LF AI & Data 大家庭&#xff01;&#x1f389; 在主流的 AI 应用架构中&#xff0c;大语言模型&#xff0…

Python数据处理利器,pivot与melt让表格变得灵活

大家好&#xff0c;在数据分析和处理过程中&#xff0c;数据的重塑是一个非常常见且重要的操作。数据重塑能够从不同的角度观察数据&#xff0c;以更符合分析需求的方式来呈现数据。在Python的Pandas库中&#xff0c;pivot和melt是两种强大的数据重塑工具&#xff0c;能够轻松地…