前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Logback动态配置.01_Appender

Logback动态配置.01_Appender

作者头像
白凡
发布2018-08-07 17:19:56
2.4K0
发布2018-08-07 17:19:56
举报
文章被收录于专栏:光变

Java程序运行时,动态修改Logger的appender。

背景

在程序运行的时候,有的时候需要动态修改Logger的级别,增加、删除、修改Logger的Appender。

代码

Java代码如下:

代码语言:javascript
复制

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

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
    • 代码
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档