web-dev-qa-db-ja.com

Winstonがtypescriptでコンソールにログを記録していません

私はウィンストンに混乱しています。次のTypeScriptコードを使用して、*。tsファイルのコンソールにログオンしています。

import { Logger, LoggerInstance } from "winston";

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

コンソールは空のままです。コンパイルエラーやその他の問題はありません。

同時に、以下は正常に機能します。

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

誰かがそれが事実である理由の手がかりを持っていますか?ロガーを別の方法で構成する必要がありますか? 2番目の例から取得したデフォルトをどのように使用しますか?

10
wzr1337

新しいLoggerインスタンスをインスタンス化するときは、ログの送信先がわかるように、トランスポートのリストを提供する必要があります。

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)(),
    new (winston.transports.File)({ filename: 'somefile.log' })
  ]
});
3
idbehold

これは、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' })
  ]
});

一般的には、以前はwinston.<...>を使用せずに、すべての定数と型をインポートできます。

7
bguyl

上手、

@idbeholdのヒントのおかげで、わかりやすく簡単であることがわかりました。

import * as winston from "winston";

winston.info('Now my debug messages are written to the console!');

デフォルトのロガーで動作します。

4
wzr1337