当前位置: 首页 > news >正文

聊聊logback的ShutdownHook

本文主要研究一下logback的ShutdownHook

ShutdownHook

ch/qos/logback/core/hook/ShutdownHook.java

/*** Interface describing a logback shutdown hook implementation* * @author Mike Reinhold*/
public interface ShutdownHook extends Runnable, ContextAware {
}

ShutdownHook接口继承了Runnable、ContextAware接口

ShutdownHookBase

ch/qos/logback/core/hook/ShutdownHookBase.java

/*** Base class for classes implementing a Logback ShutdownHook via extension** @author Mike Reinhold*/
public abstract class ShutdownHookBase extends ContextAwareBase implements ShutdownHook {public ShutdownHookBase() {}/*** Default method for stopping the Logback context*/protected void stop() {addInfo("Logback context being closed via shutdown hook");Context hookContext = getContext();if (hookContext instanceof ContextBase) {ContextBase context = (ContextBase) hookContext;context.stop();}}
}

ShutdownHookBase继承了ContextAwareBase,声明实现ShutdownHook,它提供了一个stop方法,用于关闭ContextBase

DelayingShutdownHook

ch/qos/logback/core/hook/DelayingShutdownHook.java

/*** ShutdownHook implementation that stops the Logback context after a specified* delay.  The default delay is 0 ms (zero).** @author Mike Reinhold*/
public class DelayingShutdownHook extends ShutdownHookBase {/*** The default is no delay before shutdown.*/public static final Duration DEFAULT_DELAY = Duration.buildByMilliseconds(0);/*** The delay in milliseconds before the ShutdownHook stops the logback context*/private Duration delay = DEFAULT_DELAY;public DelayingShutdownHook() {}public Duration getDelay() {return delay;}/*** The duration to wait before shutting down the current logback context.** @param delay*/public void setDelay(Duration delay) {this.delay = delay;}public void run() {addInfo("Sleeping for "+delay);try {Thread.sleep(delay.getMilliseconds());} catch (InterruptedException e) {}super.stop();}
}

DelayingShutdownHook继承了ShutdownHookBase,其run方法先sleep指定的delay,然后执行stop方法

示例

<configuration debug="false"><shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"><delay>10</delay></shutdownHook><appender name="A" class="ch.qos.logback.core.read.ListAppender"/><root level="DEBUG"><appender-ref ref="A" /></root></configuration>

小结

logback的ShutdownHook接口继承了Runnable、ContextAware接口,它有一个抽象类ShutdownHookBase提供了一个stop方法,用于关闭ContextBase,它的子类为DelayingShutdownHook,可以延迟指定时间再关闭ContextBase。

http://www.lryc.cn/news/224836.html

相关文章:

  • 【第2章 Node.js基础】2.4 Node.js 全局对象...持续更新
  • 大数据毕业设计选题推荐-河长制大数据监测平台-Hadoop-Spark-Hive
  • Unity与java后端UDP通信
  • vue3 - swiper插件 实现PC端的 视频滑动功能(仿抖音短视频)
  • 简述SVM
  • 【DevOps】Rundeck以及Jenkins
  • 数字滤波器分析---零极点分析
  • HarmonyOS应用开发-网络请求与web组件
  • 频次最高的38道selenium面试题及答案
  • 利用MSF设置代理
  • 模型剪枝算法——L1正则化BN层的γ因子
  • 11.9 知识总结(三板斧、全局配置文件、静态文件的配置、request对象等)
  • CSS 外边距、填充、分组嵌套、尺寸
  • Exploration by random network distillation论文笔记
  • Ubuntu22.04配置Go环境
  • Zabbix深入解析与实战
  • 怎么用电脑开发安卓app?能外包吗?
  • 1-前端基本知识-HTML
  • 磁盘的分区、格式化、检验与挂载 ---- fdisk,mkfs,mount
  • Solr搜索参数详解
  • Flink(三)【运行时架构】
  • conda添加清华镜像源
  • 「Verilog学习笔记」求两个数的差值
  • 微头条项目实战:通过postman测试登录验证请求
  • ARCGIS SERVER WMS、WFS服务添加过滤条件
  • 2013年108计网
  • 【数据结构】单链表OJ题(一)
  • 2023年云计算发展趋势浅析
  • [极客大挑战 2019]Http1
  • C 语言 for循环