Winston没有在打字稿中登录到控制台

wzr*_*337 8 node.js winston typescript

我对温斯顿很困惑.我使用以下打字稿代码登录我的*.ts文件中的控制台:

import { Logger, LoggerInstance } from "winston";

const logger:LoggerInstance = new Logger();
logger.info('Now my debug messages are written to the console!');
Run Code Online (Sandbox Code Playgroud)

控制台仍然是空的.没有编译错误或其他问题.

同时以下工作正常:

const wnstn = require("winston");
wnstn.info('Finally my messages are written to the console!');
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么会这样?我是否必须以不同方式配置Logger?我如何使用第二个例子中的默认值?

小智 7

这是导入Winston的Typescript方式.

首先,请确保您已安装了输入:
npm i -D @types/winston

然后,在你的script.ts中

import { Logger, transports } from 'winston';
var logger = new Logger({
  transports: [
    new transports.Console(),
    new transports.File ({ filename: 'somefile.log' })
  ]
});
Run Code Online (Sandbox Code Playgroud)

在genral中,您可以导入所有常量和类型而无需使用winston.<...>之前.


idb*_*old 5

当你实例化一个新的 Logger 实例时,你需要为它提供一个传输列表,以便它知道将日志发送到哪里:

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)(),
    new (winston.transports.File)({ filename: 'somefile.log' })
  ]
});
Run Code Online (Sandbox Code Playgroud)


wzr*_*337 5

好,

感谢 @idbehold 的提示,我发现一个简单易行的:

import * as winston from "winston";

winston.info('Now my debug messages are written to the console!');
Run Code Online (Sandbox Code Playgroud)

适用于默认记录器..