另外所有示范代码统一把 logger 参数用 nil，也不做解释。这个参数实际上是内部用途。