最近有需求要将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。
分享到:
相关推荐
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/app.log <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/...
2. **配置Logback**:在Spring Boot应用中,我们通常通过创建`src/main/resources`目录下的`logback.xml`文件来配置Logback。下面是一个基本的配置示例,实现了日志级别分类: ```xml ...
Logback是一个在Java应用程序中用于处理日志的开源库,它是Log4j的后继者,由Ceki Gülcü创建,提供了更高的性能和更丰富的功能。 **描述解析:** 描述中的"logback-demos.rar" 提示我们这是一个压缩文件,包含了...
`Logback`由著名的`Log4j`创始人Ceki Gülcü创建,它提供了更高效的日志处理机制,并且功能更加强大,包括日志级别控制、日志格式化、日志归档等。在`Tomcat`中配置`Logback`,可以有效地控制`catalina.out`的大小...
Logback 是一个在 Java 应用程序中广泛使用的日志框架,由 Ceki Gülcü 创建,作为 Log4j 的继任者。它提供高效、灵活的日志记录功能,能够满足各种日志处理需求。本篇文章将详细介绍如何使用 logback,并着重讲解...
例如,可以创建一个`ConsoleAppender`将日志输出到控制台,同时创建多个`RollingFileAppender`将不同级别的日志输出到不同的文件。以下是一个配置示例: ```xml <appender name="CONSOLE" class="ch.qos.logback....
Logback是一个广泛使用的Java日志框架,它作为log4j的一个继承者,由Ceki Gulcu创建。Logback具备提供快速的日志记录功能,易于配置,以及具备灵活性和可靠性等优势。通过Logback,开发人员可以有效地记录应用程序...
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> ${LOG_HOME}/today.log <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> ${LOG_HOME}/test-%d{...
- RollingFileAppender:定期或基于文件大小滚动日志文件。 - SMTPAppender:当达到特定错误级别时通过电子邮件发送报警。 ### 6. **Layouts(布局)** Layouts 决定日志事件的输出格式。默认的 PatternLayout 可以...
通过 RollingFileAppender,Logback 可以自动管理日志文件的大小和数量,例如,当文件大小达到一定值时,会自动创建新的日志文件,并保留一定数量的历史文件。 **MDC (Mapped Diagnostic Context)** MDC 提供了一...
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/info.log <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>...
Logback是Java领域中广泛应用的日志框架之一,由Ceki Gülcü(同时也是Log4j的创始人)创建。这个压缩包包含了Logback的核心组件和相关依赖,让我们来详细了解一下它们的用途和配置。 首先,`logback-classic-...
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/app.log <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/...
此外,Logback支持多种日志Appender,比如RollingFileAppender可以实现日志文件的自动滚动,而SiftingAppender可以根据MDC(Mapped Diagnostic Context)值动态创建日志文件。 为了在代码中使用Logback,我们可以...
logback是log4j的作者Ceki Gülcü创建的一个更现代、性能更优的日志框架。在这里,我们将深入探讨logback的优势和特性,以及为什么它在Java开发中被广泛推荐。 1. 性能优势:logback在设计时就考虑了性能,它的...
Logback 是由 Ceki Gülcü 创建的一个开源日志框架,它是 Log4j 的升级版,具有更高的性能和更灵活的配置。Logback 提供了日志记录、归档、分级等功能,适用于各种 Java 应用程序。 **Logback 组件** Logback ...
Logback 是一个广泛使用的日志记录框架,由 Ceki Gülcü 创建,他是早期流行的日志框架 Log4j 的创始人。Logback 主要分为三个组件:logback-core、logback-classic 和 logback-access,分别提供了核心功能、SLF4J...
Logback作为一款高效、灵活的日志框架,是Java应用中的首选之一,尤其在处理大量日志数据时,其性能优势更为显著。 **Logback简介** Logback是由Ceki Gülcü创建的,他是log4j的创始人,旨在提供更高效的日志解决...
Logback 是一个高效、强大的日志处理框架,它由Ceki Gülcü创建,是Log4j的后续项目。在Spring Boot应用中,Logback与Spring的集成通常通过`logback-spring.xml`配置文件实现。本教程将深入讲解如何使用`logback-...
Logback是由Ceki Gülcü创建的,它是Log4j的后续项目,旨在提供更高的性能和更低的内存消耗。Logback分为三个主要组件:`logback-core`(基础框架)、`logback-classic`(实现了SLF4J API)和`logback-access`(与...