class LogUtilExt extends LogUtil {
    static final Logger log = LoggerFactory.getLogger(Solon.class);

    public LogUtilExt() {
        if (Solon.app() != null) {
            incubate();
        }
    }

    /**
     * 孵化日志实现（加载配置，转换格式）
     */
    private void incubate() {<FILL_FUNCTION_BODY>}

    @Override
    public void trace(String content) {
        log.trace(content);
    }

    @Override
    public void debug(String content) {
        log.debug(content);
    }

    @Override
    public void info(String content) {
        log.info(content);
    }

    @Override
    public void warn(String content, Throwable throwable) {
        if (throwable == null) {
            log.warn(content);
        } else {
            log.warn(content, throwable);
        }
    }

    @Override
    public void error(String content, Throwable throwable) {
        if (throwable == null) {
            log.error(content);
        } else {
            log.error(content, throwable);
        }
    }
}

        ServiceLoader<LogIncubator> internetServices = ServiceLoader.load(LogIncubator.class);
        for (LogIncubator logIncubator : internetServices) {
            try {
                logIncubator.incubate();
            } catch (Throwable e) {
                // native: 静态扩展，初始化 LogUtilExt 报错时，此处可以将异常打印出来
                e.printStackTrace();
                throw new IllegalStateException(e);
            }
            break;
        }
    
<methods>public non-sealed void <init>() ,public void debug(java.lang.String) ,public void debugAsync(java.lang.String) ,public void error(java.lang.String) ,public void error(java.lang.String, java.lang.Throwable) ,public static org.noear.solon.core.util.LogUtil global() ,public void info(java.lang.String) ,public void infoAsync(java.lang.String) ,public void trace(java.lang.String) ,public void warn(java.lang.String) ,public void warn(java.lang.String, java.lang.Throwable) <variables>private static org.noear.solon.core.util.LogUtil global