`

logback 之 创建 RollingFileAppender

阅读更多

最近有需求要将context信息写入文件,以备后续数据分析。本想直接同步写入文件了事,但是logback针对日志的输出性能尤佳,且为异步写入。既然logback封装如此完美,何不直接使用?

 

动态创建Logger及其appender。代码如下:

 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.rolling.RollingFileAppender;
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
 
        Logger logger = LoggerFactory.getLogger(loggerName);
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        
        ch.qos.logback.classic.Logger newLogger = (ch.qos.logback.classic.Logger)logger;
        //Remove all previously added appenders from this logger instance.
        newLogger.detachAndStopAllAppenders();
        
        //define appender
        RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<ILoggingEvent>();
        
        //policy
        TimeBasedRollingPolicy<ILoggingEvent> policy = new TimeBasedRollingPolicy<ILoggingEvent>();
        policy.setContext(loggerContext);
        policy.setMaxHistory(5);
        policy.setFileNamePattern("/home/lionbule/%d{yyyy-MM-dd}.log");
        policy.setParent(appender);
        policy.start();
        
        //encoder
        PatternLayoutEncoder encoder = new PatternLayoutEncoder();
        encoder.setContext(loggerContext);
        encoder.setPattern("%message%n");
        encoder.start();
        
        //start appender
        appender.setRollingPolicy(policy);
        appender.setContext(loggerContext);
        appender.setEncoder(encoder);
        appender.setPrudent(true); //support that multiple JVMs can safely write to the same file.
        appender.start();
        
        newLogger.addAppender(appender);
        
        //setup level
        newLogger.setLevel(Level.WARN);
        //remove the appenders that inherited 'ROOT'.
        newLogger.setAdditive(false);

上述代码为草稿,具体使用细节,则根据自己的需求调整。 

 

要点总结:

1. 成功创建appender的关键在于,要实例化一个appender,然后set policy/encoder/&others...

    最后再start appender。

    并且在创建policy时,一定要记住set当前实例化的appender。

    具体步骤看上述demo。

 

 

 

分享到:
评论

相关推荐

    Logback类库含logback.xml配置文件

    该压缩包包含 logback类库所包含的jar包以及logback.xml配置文件(放到 src 目录),用于开发学习使用。

    Slf4j+logback实现logback测试

    Slf4j+logback实现logback测试,Slf4j+logback实现logback测试

    logback下载 日志文件jar包

    内置三个jar包 一个配置文件 logback.txt logback-classic-1.2.3.jar logback-core-1.2.3.jar slf4j-api-1.7.26.jar

    logback.的jar包

    此zip包含logback-access-1.2.3和logback-classic-1.2.3和logback-core-1.2.3

    logback-core-1.2.10-API文档-中文版.zip

    赠送jar包:logback-core-1.2.10.jar; 赠送原API文档:logback-core-1.2.10-javadoc.jar; 赠送源代码:logback-core-1.2.10-sources.jar; 赠送Maven依赖信息文件:logback-core-1.2.10.pom; 包含翻译后的API文档...

    logback jar包和logback.xml配置文件打包下载 小白新手学Java

    slf4j-api-1.7.26.jar logback-core-1.2.3.jar logback-classic-1.2.3.jar logback.xml

    logback.jar包

    日志组件logback jar包,logback-access-1.1.3.jar logback-classic-1.1.3.jar logback-core-1.1.3.jar slf4j-api-1.7.12.jar

    logback-1.0.1

    logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便...

    logback-ext-spring-0.1.1

    logback与spring集成的文件,从官网上找的。上传的文件包括源文件和jar包,以下是连接: https://github.com/qos-ch/logback-extensions/wiki/Spring ...

    logback日志框架所需要的jar包

    包含logback所需:logback-classic-1.1.7.jar、logback-classic-1.1.7-sources.jar、logback-core-1.1.7.jar、logback-core-1.1.7-sources.jar、slf4j-api-1.7.21.jar、slf4j-api-1.7.21-sources.jar

    logback日志的jar包和配置介绍

    logback日志的jar包和配置介绍:logback-classic-1.1.2.jar、logback-core-1.1.2.jar、slf4j-api-1.7.7.jar、logback.xml、rsframework.properties

    LogBack 中文开发手册

    Logback 中文手册,清晰版. 简单地说,Logback 是一个 Java 领域的日志框架。它被认为是 Log4J 的继承人。 Logback 主要由三个模块组成: logback-core logback-classic logback-access

    LogBack配置文件

    LogBack配置文件,主要包括LOGBack的配置文件内容

    logback通用xml配置

    用于logback框架通用xml配置文件

    logback-core-1.2.9.jar

    logback-core-1.2.9.jar

    Logback所需的jar包

    免费获取Logback所需的jar包 打包合集 让你少走弯路 一.logback简介 1.logback: Logback是由log4j创始人设计的另一个开源日志组件。(好的日志记录方式可以提供我们足够多的定位错误的依据)。 2.主要有三个模块...

    logback官方中文版文档.pdf

    以十多年设计工业级记录系统的经验为基础,所创建的logback比现有任何记录系统更快、占用资源更少,有时差距非常大。 Logback提供独特而实用的特性,比如Marker、参数化记录语句、条件化堆栈跟踪和强大的事件过滤...

    logback-ext-spring

    spring使用logback的扩展,使用起来非常方便。在web.xml中配置: &lt;param-name&gt;logbackConfigLocation &lt;param-value&gt;/WEB-INF/conf/logback.xml &lt;listener-class&gt;ch.qos.logback.ext.spring.web....

    关闭HttpClient日志的logback文件

    关闭HttpClient日志的logback文件

    logback远程漏洞修复,1.2.7以上版本,

    logback远程漏洞修复,1.2.7以上版本,logback-classic-1.2.10.jar ,jdk1.5及以上

Global site tag (gtag.js) - Google Analytics