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();
}
}