log4j 源码解析_log4j2 源码分析

1.初始化 Logger logger = LogManager.getLogger(MyTest.class);

org.apache.logging.log4j.LogManager.getLogger()

LoggerContext.start()

LoggerContext.reconfigure()

LoggerContext.setConfiguration()

org.apache.logging.log4j.core.config.BaseConfiguration.start()

org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(final Node node, final LogEvent event)

org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(final PluginType type, final Node node, final LogEvent event)

RandomAccessFileAppender.createAppender()

2.执行 logger.info("test");

1. org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(final LogEvent event) //Actual writing occurs here.

2. org.apache.logging.log4j.core.layout.AbstractStringLayout.toByteArray(final LogEvent event)

3. org.apache.logging.log4j.core.appender.OutputStreamManager.write(final byte[] bytes)

4. org.apache.logging.log4j.core.appender.RandomAccessFileManager.write(final byte[] bytes, int offset, int length)

protected synchronized void write(final byte[] bytes, int offset, int length) {

super.write(bytes, offset, length); // writes to dummy output stream

int chunk = 0;

do {

if (length > buffer.remaining()) {

flush();

}

chunk = Math.min(length, buffer.remaining());

buffer.put(bytes, offset, chunk);

offset += chunk;

length -= chunk;

} while (length > 0);

if (isImmediateFlush || isEndOfBatch.get() == Boolean.TRUE) {

flush();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值