M extends Metric<M> recursive type
complete trace logging