聊聊logback的ShutdownHook

编程入门 行业动态 更新时间:2024-10-25 02:19:27

聊聊<a href=https://www.elefans.com/category/jswz/34/1742576.html style=logback的ShutdownHook"/>

聊聊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。

更多推荐

聊聊logback的ShutdownHook

本文发布于:2023-11-15 18:53:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1604522.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:logback   ShutdownHook

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!