如何关闭温斯顿开玩笑的日志

The*_*ome 4 node.js npm jestjs

目前我正在使用 jest 测试 NodeJS 应用程序。特别是系统看起来像这样:

当我运行测试时,我喜欢对日志进行排序。特别是在第一次测试然后深入日志时。我知道,那个笑话有选择--silent。有趣的是,这个选项不适用于温斯顿。winston的源代码看起来像是试图直接写入stdout/err。

--silent有人知道,在使用该选项运行测试时如何让温斯顿保持沉默

Mr.*_*Mr. 7

您可以使用setupFilesAfterEnvjest 选项,将其指向将模拟的文件console。例如

将其添加到jest.config.js

{
  ...
  setupFilesAfterEnv: ["./jest.setup.js"],
  ...
}
Run Code Online (Sandbox Code Playgroud)

然后创建一个文件jest.setup.js

global.beforeAll(() => {
  console.error = jest.fn().mockImplementation(() => {});
  console.info = jest.fn().mockImplementation(() => {});
  console.log = jest.fn().mockImplementation(() => {});
});

Run Code Online (Sandbox Code Playgroud)

winston的源代码看起来像是试图直接写入stdout/err。

请注意,由于您将 winston 配置为打印到 stdout\stderr,因此上面的以下建议应该可以解决问题。当然,您可能希望为该--silent标志添加额外的检查

否则,您可以利用温斯顿传输的属性来设置使温斯顿沉默的条件silent

silent:如果为 true,则所有日志都会被抑制

  • “沉默”对我有用,谢谢。简而言之:`winston.createLogger({silent: process.env.JEST_WORKER_ID !== undefined })` (3认同)