java 源码欣赏,Logback源码赏析-日志按时间滚动(切割)

2023-11-16

引言

用过Logback的同学们大多都知道Logback日志框架可以自动按照某个时间点切割日志的功能。但了解其中工作原理的同学可能并不是很多。楼主今天就带领各位了解一下其中的核心源码。本文的示例引用了Logback 1.1.7版的源码。

举个实际的例子,如果希望某一个Appender按天切割日志,那么我们需要类似如下的配置:

logs/service-log.log

%d{yyyy-MM-dd HH:mm:ss} %level [%class:%line] - %m%n

logs/service-log.%d{yyyy-MM-dd}.log.zip

如果需要日志切割功能,首先要选用RollingFileAppender这种Appender,之后要配置TimeBasedRollingPolicy作为该Appender的滚动策略。

源码解读

业务代码在调用Logback的记录日志的方法时,Logger类会调用ch.qos.logback.core.Appender#doAppend方法。Appender的doAppend就是Appender记录日志功能的入口。

我们先来看一下RollingFileAppender的继承关系

bVIxKo?w=814&h=700

看起来貌似有些晕。没关系,doAppend方法经过几层之后会调到ch.qos.logback.core.rolling.RollingFileAppender#subAppend 这个方法。而跟日志切割相关的逻辑就在这里面。因此从doAppend到subAppend之间的调用链路我们在此略过不提,而是从subAppend这个方法切入。

/**

* This method differentiates RollingFileAppender from its super class.

*/

@Override

protected void subAppend(E event) {

// The roll-over check must precede actual writing. This is the

// only correct behavior for time driven triggers.

// We need to synchronize on triggeringPolicy so t

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 源码欣赏,Logback源码赏析-日志按时间滚动(切割) 的相关文章

  • 2023逆向分析代码渗透测试flag0071解析(超详细)

    PS 这里没有找到题目所以我直接直接做到最后一步把flag即可 1 将flag0071使用IDA打开 使用shift f12可以看到wrong和right的字符串 2 双击到data段按x交叉引用即可到达main主函数 3 程序逻辑很清晰
  • 疯壳Android嵌入式Linux平板开发教程4-3LCD驱动实验

    详情地址 https fengke club GeekMart views offline android 购买链接 https fengke club GeekMart su fHnaDyD1o jsp 视频地址 https fengke
  • win10下的wsl真是太好用了

    生命在于折腾 前段时间使用的是linuxmint 这个系统很好 但无奈抵挡不住win10的诱惑 其实主要的原因是玩游戏 搞了几天wine没搞好 重新加入win10的怀抱 在msdn上下载了原版光盘镜像 又经过了漫长的更新 终于进入了win1
  • tnsping遇到TNS-12546: TNS: 权限被拒绝

    从客户端tnsping 一台数据库 报错 TNS 12537 TNS 连接关闭 奇怪 服务器端可以tnsping通 也可以正常访问数据库 listener状态也正常 为什么客户端连接不上 查了一下原因 为sqlnet ora文件做了Vali
  • <Linux开发>驱动开发 -之-基于pinctrl/gpio子系统的LED驱动

    Linux开发 驱动开发 之 基于pinctrl gpio子系统的LED驱动 交叉编译环境搭建 Linux开发 linux开发工具 之 交叉编译环境搭建 uboot移植可参考以下 Linux开发 之 系统移植 uboot移植过程详细记录 第
  • [633]pyppeteer驱动浏览器

    当使用selenium去某宝或其他网站进行爬虫或者模拟登陆时 会出现滑动验证码 并且无论是用ActionChains滑还是手动滑 都会很委婉的告诉你 哎呀网络错误 请刷新 等等 why 爬虫都会碰到某些网站刚刚打开页面就被判定为 非人类行为
  • [WinError 10061] 由于目标计算机积极拒绝,无法连接。‘))‘: /simple/scikit-learn/

    WinError 10061 由于目标计算机积极拒绝 无法连接 simple scikit learn 康康下面的解决办法吧 首先按键盘快捷方式win R 打开运行输入框 输入regedit命令 会弹出这个页面 按照这个路径找 HKEY C
  • 【华为OD机试】GPU算力 (C++ Python Java)2023 B卷

    题目解析 为了充分发挥GPU算力 需要尽可能多的将任务交给GPU执行 现在有一个任务数组 数组元素表示在这1秒内新增的任务个数且每秒都有新增任务 假设GPU最多一次执行n个任务 一次执行耗时1秒 在保证GPU不空闲情况下 最少需要多长时间执
  • python3(六)监督学习

    监督学习 目录 1 监督学习 2 分类 2 1 人体运动信息评级实例 2 2 基本分类模型 2 3 运动状态程序 3 回归 3 1 线性回归 正文 回到顶部 1 监督学习 利用一组带标签的数据 学习从输入到输出的
  • Xilinx BRAM IP介绍

    BRAM IP核介绍 BRAM简介 BRAM类型 三种读写模式 写优先 读优先 No change 总线支持 输出寄存 BRAM简介 BRAM 即Block RAM 是FPGA中一种重要的存储资源 另一种常见的存储资源是DRAM Distr
  • IDEA 解决项目端口被占用

    1 在Windows Cmd窗口命令下 输入 netstat ano findstr 8080 说明 查看占用8080端口的进程 显示占用端口的进程 2 kill 占用8080 端口进程 taskkill pid 34728 f 说明 运行
  • 小程序获取用户当前位置计算距离最近的地铁站并获取对应地区的商品(可手动切换地铁线路及地铁站)

    功能介绍 主要就是获取到用户当前位置的经纬度 调用后端api接口计算出距离最近的地铁站 并展示对应商家 用户可手动切换或者搜索地铁站点进行切换 切换后展示对应地铁站附近的商家 这里手动切换地铁站是直接用的picker组件对地铁线路以及地铁站
  • 一点绕另一点旋转一定角度后的坐标计算

    假设对坐标系上任意点 x y 绕一个坐标点 rx ry 逆时针旋转 角度后的新的坐标设为 x0 y0 有公式 x0 x rx cos y ry sin rx y0 x rx sin y ry cos ry
  • 2023数学建模思路 - 案例

    更多数学建模案例 https mianbaoduo com o bread YpyXmZhs 一 背景 二 高斯分布的指数族形式 三 对数配分函数与充分统计量的关系 三 极大似然估计与充分统计量 lt
  • ppt转换成pdf免费软件

    为什么80 的码农都做不了架构师 gt gt gt ppt转换成pdf免费软件 导读 使用 ppt转换成pdf转换器当然是转换ppt文件的一个方法 但毕竟好的转换工具并不多 对于从事大量文案处理的工作人员来讲 没有一款专业好用的ppt转换成
  • Linux下使用鼠标滚轮

    Linux下使用鼠标滚轮 让acrobat pdfreader支持滚轮鼠标 这些天用acroread看pdf文件 发现不支持鼠标滚轮 很不爽 最终在水母上搜到了解决方法 将如下内容加到 Xresources文件中 AcroRead XmSc
  • 方差、标准差、协方差、协方差矩阵、散度矩阵

    方差 统计中的方差 样本方差 是每个样本值与全体样本值的平均数之差的平方值的平均数 概率论中方差用来度量随机变量和其数学期望 即均值 之间的偏离程度 1 统计 方差用来计算每一个变量 观察值 与总体均数之间的差异 为避免出现离均差总和为零
  • 小程序实现滚动加载(懒加载)

    前言 小程序是一项很受欢迎的技术 随着其能力的不断增强 越来越多的人开始使用小程序来完成各种任务 当我面面临一个页面有非常多的数据时 该如何处理呢 显然一次性全部加载完 会非常消耗性能的 为了解决这些问题从而出现了一种叫滚动加载的数据处理方
  • 数字时钟仿真电路设计

    课题设计要求 时间以24小时为一个周期 显示时 分 秒 具有校时功能 可以分别对时分秒进行单独校时 使其校正到标准时间 计时过程具有报时功能 当时间到达整点前十秒进行蜂鸣报时 为了保证计时的稳定及准确 须由晶体振荡器提供表针时间基准信号 准

随机推荐

  • 微信公众号开发config:fail,Error: invalid url domain总结自己遇到的几种原因

    1 JS接口安全域名配置错误 不要http 2 设置安全域名时 txt文件未在域名根目录下 3 appid错误 用了其他公众号的 4 ios手机 获取的当前url与实际不一致 详情见下一篇文章
  • Gradle版本7+ AAR包的引入应用

    ARR包的使用 作为一个安卓的初学者 因为某些个客户需要我们提供安卓SDK 我们压根没有移动端业务 为了赚钱 硬着头皮从0开始写一个SDK 终于我这个 百度战士 也靠百度打出了aar包 问题来了 当你搜索安卓如何引用aar 包的时候 是不是
  • Unity物体拖拽系统(一)

    在游戏制作的过程中 我们经常会遇到拖拽物体到某个位置并做其他操作的需求 比如我们会把装备拖动到装备栏来使用这个装备 为了方便的解决这个问题 我制作了一套耦合性比较低的拖拽系统 这套拖拽会适配我们之前制作的按键系统 很简单的就可以添加上手柄的
  • 哈希表查找失败的平均查找长度_哈希算法高大上?也不过如此

    01 知识框架 02 知识点详解 1 散列表的相关概念 什么是散列表和散列函数 是根据关键码值 Key value 而直接进行访问的数据结构 也就是说 它通过把关键码值映射到表中一个位置来访问记录 以加快查找的速度 这个映射函数叫做 散列函
  • VTK(0)---CMake工程

    VTK 0 CMake工程 目录 前言 一 指定cmake版本 二 设置工程 三 针对Qt 自动使用moc uic rcc程序预处理 h文件 ui文件等 四 平台移植问题 五 设置编译模式 六 找到包 七 包含头文件等 八 链接库文件 九
  • 自定义进度条,支持显示浮点数

    思路 QT原生的进度条默认只支持显示整型值 这里重新封装了进度条 支持显示浮点数 内部同时设置了进度条样式 支持显示提示信息 GitHub下载链接 https github com caochuanlin progressbar 头文件 c
  • 01.项目目录搭建以及styled-Components和Reser.css的结合使用

    首先 我们使用脚手架创建了一个新的项目 这里我们对项目的一些基本文件进行整理 首先将一些不需要的文件删除 删除之后留下一些需要的文件 如下 这里我们将原来的style css已经重命名为style js文件 下面安装styled Compo
  • NPM Magic

    NPM Magic package json package json 最起码要包含 name 和 version 快速初始化 package json npm init yes dependencies 生产环境依赖的包 devDepen
  • 安规电容,X电容,Y电容

    什么是安规电容 首先要说一下 安规 是安全规范的简称 安全规范对产品的装置与电子组件有明确的陈述及指导 以避免由于设计不良或使用不当而导致电击 能量 打火 拉弧 爆炸 火灾 辐射 机械与热 高温危险 化学危险等事故和灾害 要求生产厂商尽可能
  • Vue3训练营笔记

    vue3脚手架的详细使用说明 文档下载 https download csdn net download qq 42740465 87939368 spm 1001 2014 3001 5503
  • ROS学习(1)—Ubuntu20.04系统安装noetic学习日志

    1 前言 ROS知识自学 现有博文比较多 而且参差不齐 为了梳理自己的学习思路 形成自身的知识体系 撰写自己的学习日志文档 参考文章及链接均在文章末尾显示 2 主要安装步骤 2 1 更换源文件 添加软件源文件则是将国外服务器的下载地址更改为
  • 标识符和关键字的规则

    大家好 我是耀曜 这段事件没有怎么更新文章 主要是最近换工作 有一年的工作经验 说白了就是一个初级Java后端开发的新手 这段时间面了很多家 我也很纳闷问的都是基础差不多都忘掉了的 以后这段事间耀曜会发布一些关于面试的问题的总结 希望对看到
  • Android 数据的保存,检索,删除之Cursor

    今天遇到的一个问题是如何将数据删除后 将原来的id也相应的做改变呢 如果说对其id值进行逐个修改这也是可以的 但是当数据增多的时候 我们这么做就会很大程度上的降低程序的性能 所以我们想到的就是不要根据id的检索来获取数据库中的值 因为这样做
  • face-api.js中加入MTCNN:进一步支持使用JS实时进行人脸跟踪和识别

    如果你现在正在阅读这篇文章 那么你可能已经阅读了我的介绍文章 JS使用者福音 在浏览器中运行人脸识别 或者之前使用过face api js 如果你还没有听说过face api js 我建议你先阅读介绍文章再回来阅读本文 和往常一样 本文中为
  • C++实现顺序表与链表

    C 实现顺序表与链表 一 顺序表 之前已经对顺序表有了了解 需要注意的是读者如果疑惑以下代码没有实现头插与头删 是因为代码中任意插入与删除这两个函数可以实现此功能 下面有测试代码 读者也可以自行测试 代码如下 include
  • 手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)

    0 MINIGUI MiniGUI 是一款面向嵌入式系统的高级窗口系统 Windowing System 和图形用户界面 Graphical User Interface GUI 支持系统 由魏永明先生于 1998 年底开始开发 2002
  • Pycharm如何选择自动打开或不打开最近项目

    如下图
  • 【Milvus的安装和使用】

    0 介绍 milvus是一个用于存储 index索引和管理巨量由深度学习网络或者其他模型生成embedding vectors的工具 不同于常见的关系型数据库用来处理结构化数据 Milvus被设计用来处理由非结构化数据 如图像 音频等 生成
  • 超链接打不开是什么原因html,超链接打不开是什么原因

    演示工具 电脑型号 华硕adolbook14 2020 系统版本 windows10 具体原因及解决方法 1 如果是链接到本地文件的超链接无法打开 可能是相对路径和绝对路径的问题 绝对地址 是有完全的路径 如果超链接的路径写错了 就无法打开
  • java 源码欣赏,Logback源码赏析-日志按时间滚动(切割)

    引言 用过Logback的同学们大多都知道Logback日志框架可以自动按照某个时间点切割日志的功能 但了解其中工作原理的同学可能并不是很多 楼主今天就带领各位了解一下其中的核心源码 本文的示例引用了Logback 1 1 7版的源码 举个