class MeterLongTimerInterceptor  extends BaseMeterInterceptor<MeterLongTimer, LongTaskTimer> {

    @Override
    protected MeterLongTimer getAnno(Invocation inv) {<FILL_FUNCTION_BODY>}

    @Override
    protected String getAnnoName(MeterLongTimer anno) {
        return Utils.annoAlias(anno.value(), anno.name());
    }

    @Override
    protected Object metering(Invocation inv, MeterLongTimer anno) throws Throwable {
        String meterName = getMeterName(inv, anno);
        LongTaskTimer meter = getMeter(meterName, () -> {
            return LongTaskTimer.builder(getMeterName(inv, anno))
                    .tags(getMeterTags(inv, anno.tags()))
                    .publishPercentiles(anno.percentiles())
                    .description(anno.description())
                    .register(Metrics.globalRegistry);
        });

        //计时
        LongTaskTimer.Sample sample = meter.start(); //默认是 NANOSECONDS 计时
        try {
            return inv.invoke(); //改成 record, 不用再一层包异常
        } finally {
            sample.stop();
        }
    }
}

        MeterLongTimer anno = inv.getMethodAnnotation(MeterLongTimer.class);
        if (anno == null) {
            anno = inv.getTargetAnnotation(MeterLongTimer.class);
        }
        return anno;
    
<methods>public non-sealed void <init>() ,public java.lang.Object doIntercept(org.noear.solon.core.aspect.Invocation) throws java.lang.Throwable<variables>private final Map<java.lang.String,io.micrometer.core.instrument.LongTaskTimer> meterCached