in log4j-weaver/src/main/java/org/apache/logging/log4j/weaver/log4j2/LoggerConversionHandler.java [214:233]
private void handlePrintfMethods(LocationMethodVisitor mv, String descriptor) {
final Type[] types = Type.getArgumentTypes(descriptor);
// Transform the last two arguments into a supplier
mv.invokeSupplierLambda(SupplierLambdaType.FORMATTED_MESSAGE);
int supplierIndex = mv.nextLocal();
mv.storeLocal(supplierIndex, SUPPLIER_TYPE);
int markerIndex = -1;
if (types[1].equals(MARKER_TYPE)) {
markerIndex = mv.nextLocal();
mv.storeLocal(markerIndex, MARKER_TYPE);
}
mv.invokeInterface(LOGGER_TYPE, AT_LEVEL_METHOD);
mv.storeLocation();
if (markerIndex >= 0) {
mv.loadLocal(markerIndex, MARKER_TYPE);
mv.invokeInterface(LOG_BUILDER_TYPE, WITH_MARKER_METHOD);
}
mv.loadLocal(supplierIndex, SUPPLIER_TYPE);
mv.invokeInterface(LOG_BUILDER_TYPE, LOG_BUILDER_LOG_SUPPLIER_METHOD);
}