最近有需求要将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包以及logback.xml配置文件(放到 src 目录),用于开发学习使用。
Slf4j+logback实现logback测试,Slf4j+logback实现logback测试
内置三个jar包 一个配置文件 logback.txt logback-classic-1.2.3.jar logback-core-1.2.3.jar slf4j-api-1.7.26.jar
此zip包含logback-access-1.2.3和logback-classic-1.2.3和logback-core-1.2.3
赠送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文档...
slf4j-api-1.7.26.jar logback-core-1.2.3.jar logback-classic-1.2.3.jar logback.xml
日志组件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当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便...
logback与spring集成的文件,从官网上找的。上传的文件包括源文件和jar包,以下是连接: https://github.com/qos-ch/logback-extensions/wiki/Spring ...
包含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-classic-1.1.2.jar、logback-core-1.1.2.jar、slf4j-api-1.7.7.jar、logback.xml、rsframework.properties
Logback 中文手册,清晰版. 简单地说,Logback 是一个 Java 领域的日志框架。它被认为是 Log4J 的继承人。 Logback 主要由三个模块组成: logback-core logback-classic logback-access
LogBack配置文件,主要包括LOGBack的配置文件内容
用于logback框架通用xml配置文件
logback-core-1.2.9.jar
免费获取Logback所需的jar包 打包合集 让你少走弯路 一.logback简介 1.logback: Logback是由log4j创始人设计的另一个开源日志组件。(好的日志记录方式可以提供我们足够多的定位错误的依据)。 2.主要有三个模块...
以十多年设计工业级记录系统的经验为基础,所创建的logback比现有任何记录系统更快、占用资源更少,有时差距非常大。 Logback提供独特而实用的特性,比如Marker、参数化记录语句、条件化堆栈跟踪和强大的事件过滤...
spring使用logback的扩展,使用起来非常方便。在web.xml中配置: <param-name>logbackConfigLocation <param-value>/WEB-INF/conf/logback.xml <listener-class>ch.qos.logback.ext.spring.web....
关闭HttpClient日志的logback文件
logback远程漏洞修复,1.2.7以上版本,logback-classic-1.2.10.jar ,jdk1.5及以上