`

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所需jar包

    &lt;appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"&gt; &lt;file&gt;logs/app.log &lt;rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"&gt; &lt;fileNamePattern&gt;logs/...

    spring boot logback 实现

    2. **配置Logback**:在Spring Boot应用中,我们通常通过创建`src/main/resources`目录下的`logback.xml`文件来配置Logback。下面是一个基本的配置示例,实现了日志级别分类: ```xml ...

    logback例子

    Logback是一个在Java应用程序中用于处理日志的开源库,它是Log4j的后继者,由Ceki Gülcü创建,提供了更高的性能和更丰富的功能。 **描述解析:** 描述中的"logback-demos.rar" 提示我们这是一个压缩文件,包含了...

    Tomcat日志catalina.out过大解决方案--使用logback按日轮转.rar

    `Logback`由著名的`Log4j`创始人Ceki Gülcü创建,它提供了更高效的日志处理机制,并且功能更加强大,包括日志级别控制、日志格式化、日志归档等。在`Tomcat`中配置`Logback`,可以有效地控制`catalina.out`的大小...

    logback使用方法

    Logback 是一个在 Java 应用程序中广泛使用的日志框架,由 Ceki Gülcü 创建,作为 Log4j 的继任者。它提供高效、灵活的日志记录功能,能够满足各种日志处理需求。本篇文章将详细介绍如何使用 logback,并着重讲解...

    Logback配置文件根据 LEVEL级别将日志分类保存到不同文件.docx

    例如,可以创建一个`ConsoleAppender`将日志输出到控制台,同时创建多个`RollingFileAppender`将不同级别的日志输出到不同的文件。以下是一个配置示例: ```xml &lt;appender name="CONSOLE" class="ch.qos.logback....

    Logback用户手册中文版.pdf

    Logback是一个广泛使用的Java日志框架,它作为log4j的一个继承者,由Ceki Gulcu创建。Logback具备提供快速的日志记录功能,易于配置,以及具备灵活性和可靠性等优势。通过Logback,开发人员可以有效地记录应用程序...

    logback日志配置

    &lt;appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"&gt; ${LOG_HOME}/today.log &lt;rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"&gt; ${LOG_HOME}/test-%d{...

    logback使用方式简单总结

    - RollingFileAppender:定期或基于文件大小滚动日志文件。 - SMTPAppender:当达到特定错误级别时通过电子邮件发送报警。 ### 6. **Layouts(布局)** Layouts 决定日志事件的输出格式。默认的 PatternLayout 可以...

    Logback中文文档

    通过 RollingFileAppender,Logback 可以自动管理日志文件的大小和数量,例如,当文件大小达到一定值时,会自动创建新的日志文件,并保留一定数量的历史文件。 **MDC (Mapped Diagnostic Context)** MDC 提供了一...

    logback日志分目录分级别案例

    &lt;appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"&gt; &lt;file&gt;logs/info.log &lt;rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"&gt; &lt;fileNamePattern&gt;...

    日志框架+Logback的jar包和配置文件

    Logback是Java领域中广泛应用的日志框架之一,由Ceki Gülcü(同时也是Log4j的创始人)创建。这个压缩包包含了Logback的核心组件和相关依赖,让我们来详细了解一下它们的用途和配置。 首先,`logback-classic-...

    SpringBoot-logback

    &lt;appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"&gt; &lt;file&gt;logs/app.log &lt;rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"&gt; &lt;fileNamePattern&gt;logs/...

    springboot整合日志管理Logback.zip

    此外,Logback支持多种日志Appender,比如RollingFileAppender可以实现日志文件的自动滚动,而SiftingAppender可以根据MDC(Mapped Diagnostic Context)值动态创建日志文件。 为了在代码中使用Logback,我们可以...

    10 reasons to use logback !------log4j他爹告诉你为何要使用新的日志包logback

    logback是log4j的作者Ceki Gülcü创建的一个更现代、性能更优的日志框架。在这里,我们将深入探讨logback的优势和特性,以及为什么它在Java开发中被广泛推荐。 1. 性能优势:logback在设计时就考虑了性能,它的...

    logback日志文件

    Logback 是由 Ceki Gülcü 创建的一个开源日志框架,它是 Log4j 的升级版,具有更高的性能和更灵活的配置。Logback 提供了日志记录、归档、分级等功能,适用于各种 Java 应用程序。 **Logback 组件** Logback ...

    logback日志框架包

    Logback 是一个广泛使用的日志记录框架,由 Ceki Gülcü 创建,他是早期流行的日志框架 Log4j 的创始人。Logback 主要分为三个组件:logback-core、logback-classic 和 logback-access,分别提供了核心功能、SLF4J...

    logback高级使用例子

    Logback作为一款高效、灵活的日志框架,是Java应用中的首选之一,尤其在处理大量日志数据时,其性能优势更为显著。 **Logback简介** Logback是由Ceki Gülcü创建的,他是log4j的创始人,旨在提供更高效的日志解决...

    logback-spring.xml日志打印demo

    Logback 是一个高效、强大的日志处理框架,它由Ceki Gülcü创建,是Log4j的后续项目。在Spring Boot应用中,Logback与Spring的集成通常通过`logback-spring.xml`配置文件实现。本教程将深入讲解如何使用`logback-...

    springboot 详细配置logback

    Logback是由Ceki Gülcü创建的,它是Log4j的后续项目,旨在提供更高的性能和更低的内存消耗。Logback分为三个主要组件:`logback-core`(基础框架)、`logback-classic`(实现了SLF4J API)和`logback-access`(与...

Global site tag (gtag.js) - Google Analytics