Open geekberryonekey opened 5 months ago
以下是各种注入方式和行为表现:
@Controller('/v1/health')
export class HealthController {
@Logger('customLogger') // 能输出, 能被 format 处理, 不等于 ctx.logger
// @Logger('appLogger') // 能输出, 能被 format 处理, 不等于 ctx.logger
// @Logger() // this.myLogger === undefined
// @Inject() // this.myLogger === undefined
myLogger: ILogger; // 名字不叫 logger
// @Logger('customLogger') // 能输出, 能被 format 处理 (自定义 logger), 不等于 ctx.logger
// @Logger('appLogger') // 能输出, 能被 format 处理, 不等于 ctx.logger
// @Logger() // 能输出, 能被 format 处理, 不等于 ctx.logger
@Inject() // 能输出, 不能被 format 处理, 不能被 contextFormat 拦截, 等于 ctx.logger
logger: ILogger;
@Inject()
ctx: Context;
@Get('/')
async health() {
this.myLogger.info('myLogger');
this.logger.info('logger');
this.ctx.logger.info('ctx.logger');
return true;
}
}
format 和 contextFormat 是 clients 的两个参数是吧, 请看我上文的测试结果, 均不能被 contextFormat 拦截 (而能被 format 拦截的, ctx 都是 null)
文档里的链接底下有特殊场景,原因是 web framework 类型覆盖了 appLogger 的 context format,这里的确不好理解,下个大版本是计划重构掉的。
版本:
@midwayjs/logger: 3.4.0