tachybase_todo/docs/zh-CN/welcome/release/logger.md
Junyi 0126a48cfa
feat(plugin-workflow): add workflow specific logger (#1677)
* feat(plugin-workflow): add workflow specific logger

* fix(plugin-workflow): fix packages

* refactor(logger): adjust logger path env
2023-04-10 06:00:29 -07:00

1.4 KiB
Raw Blame History

v0.9.0NocoBase 的 Logging 系统

@nocobase/logger

基于 Winston 实现,提供了便捷的创建 logger 实例的方法。

const logger = createLogger();
logger.info('Hello distributed log files!');

const { instance, middleware } = createAppLogger(); // 用于 @nocobase/server
app.logger = instance;
app.use(middleware);

新增的环境变量

logger 相关环境变量有:

Application 的 logger 配置

const app = new Application({
  logger: {
    async skip(ctx) {
      return false;
    },
    requestWhitelist: [],
    responseWhitelist: [],
    transports: ['console', 'dailyRotateFile'],
  },
})

更多配置项参考 Winston 文档

app.logger & ctx.logger

ctx.logger 带有 reqId整个 ctx 周期里都是一个 reqId

ctx.logger = app.logger.child({ reqId: ctx.reqId });

app.loggerctx.logger 都是 Winston 实例,详细用法参考 Winston 文档

自定义 Transports

除了 Winston 的方式以外NocoBase 还提供了一种更便捷的方式

import { Transports } from '@nocobase/logger';

Transports['custom'] = () => {
  return new winston.transports.Console();
};

const app = new Application({
  logger: {
    transports: ['custom'],
  },
})