中台化改造实践--Logback动态配置 Appender (二)
发布日期:2021-06-23 17:48:06 浏览次数:2 分类:技术文章

本文共 2094 字,大约阅读时间需要 6 分钟。

 

一 背景

在程序运行的时候,有的时候需要动态修改 Logger 的级别,增加、删除、修改 Logger 的 Appender, 并通过特定的 appender 采集打印指定的日志并上传到阿里云。

二 代码

Java代码如下:

import java.io.IOException;import java.nio.charset.Charset;import org.slf4j.LoggerFactory;import org.testng.annotations.Test;import ch.qos.logback.classic.Level;import ch.qos.logback.classic.Logger;import ch.qos.logback.classic.LoggerContext;import ch.qos.logback.classic.encoder.PatternLayoutEncoder;import ch.qos.logback.core.FileAppender;/** * Log修改管理 * * @author bash * @version V1.0 * @since 2016-03-21 10:53 */public class LoggerDynamicConfig {    /**     * 日志记录Logger     */    private static final Logger LOG = (Logger) LoggerFactory.getLogger(LoggerDynamicConfig.class);    @Test    public void addAppender() throws IOException {        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();        /*这里配置encodeer。*/        PatternLayoutEncoder encoder = new PatternLayoutEncoder();        encoder.setCharset(Charset.forName("UTF-8"));        encoder.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n");        encoder.setImmediateFlush(true);        encoder.setContext(lc);        /*这里启配置appender*/        FileAppender appender = new FileAppender();        appender.setEncoder(encoder);        appender.setFile("/home/bash/workspace/temp/test.log");        appender.setName("TestFile");        appender.setAppend(false);        appender.setContext(lc);        /*这里启动encoder和appender。*/        encoder.start();        appender.start();        LOG.addAppender(appender);        LOG.info("这里时一条所有appender都可以输出的数据。");                /*修改Logger级别*/        LOG.setLevel(Level.ERROR);        LOG.info("这里的数据所有appender都不会输出。");        LOG.error("这里时一条所有appender都可以输出的数据。");        /*删除appender*/        LOG.detachAppender("TestFile");        LOG.error("这条数据不会在FileAppender中输出。");    }}

logback.xml

%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

 

 

 

三、注意事项

  1. 官网描述

 

 

 

 

日志加载顺序:

根据官网的描述可以得到这样的信息:logback.xml加载早于application.yml。

转载地址:https://blog.csdn.net/u012921921/article/details/112605096 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:啃书《C++ Primer Plus》之 const修饰符修饰 类对象 指针 变量 函数 引用
下一篇:啃书《C++ Primer Plus》之 枚举

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月09日 12时37分43秒