Typescript 如何在均值叠加应用中使用winston记录器

Typescript 如何在均值叠加应用中使用winston记录器,typescript,mean-stack,winston,Typescript,Mean Stack,Winston,我正在绞尽脑汁在我的平均堆栈应用程序中使用“winston”记录器。我的目标是:我想使用两个记录器(目前)。一个是http请求日志记录,它将被写入request.log文件,另一个是应用程序日志记录,它将被写入app.log文件。我完成了每一个教程,但我不能让它工作 我已经在我的应用程序中安装了依赖项“winston”和“morgan”,并在下面的winston.js文件中进行了配置,并加载到app.js中 var appRoot = require('app-root-path'); var

我正在绞尽脑汁在我的平均堆栈应用程序中使用“winston”记录器。我的目标是:我想使用两个记录器(目前)。一个是http请求日志记录,它将被写入request.log文件,另一个是应用程序日志记录,它将被写入app.log文件。我完成了每一个教程,但我不能让它工作

我已经在我的应用程序中安装了依赖项“winston”和“morgan”,并在下面的
winston.js
文件中进行了配置,并加载到app.js中

var appRoot = require('app-root-path');
var winston = require('winston');

// define the custom settings for each transport (file, console)
var options = {
    appLog: {
        level: 'debug',
        filename: `${appRoot}/logs/app.log`,
        handleExceptions: true,
        json: true,
        maxsize: 5242880, // 5MB
        maxFiles: 5,
        colorize: false,
    },
    requestLog: {
        level: 'info',
        filename: `${appRoot}/logs/request.log`,
        handleExceptions: true,
        json: false,
        maxsize: 5242880, // 5MB
        maxFiles: 5,
        colorize: false,
    },
    console: {
        level: 'info',
        handleExceptions: true,
        json: false,
        colorize: true,
    }
};

// instantiate a new Winston Logger with the settings defined above
var appLogger = winston.createLogger({
    transports: [
        new winston.transports.File(options.appLog),
        new winston.transports.Console(options.console)
    ],
    exitOnError: false, // do not exit on handled exceptions
});

var reqLogger = winston.createLogger({
    transports: [
        new winston.transports.File(options.requestLog),
    ],
    exitOnError: false, // do not exit on handled exceptions
});

// create a stream object with a 'write' function that will be used by `morgan`
reqLogger.stream = {
    write: function (message, encoding) {
        // use the 'info' log level so the output will be picked up by both transports (file and console)
        reqLogger.info(message);
    }
};

module.exports = appLogger;
module.exports = reqLogger;
我将其加载到
app.js
文件中,如下所示:

var morgan = require('morgan');
var winston = require('./config/winston');
app.use(morgan('combined', { stream: winston.stream }));
因此,我可以将请求日志重定向到request.log和应用程序日志。我现在有两个问题:

如何在我的应用程序*.component.ts文件中使用'appLogger'实例?? 我在互联网上到处都能看到以下代码:

var logger = require('winston'); 
logger.debug("blah blah blah");
但是,当我在*.component.ts文件中使用相同的文件时,我得到以下错误:

TS2304: Cannot find name 'require'

请帮帮我。我们不能将“winston”记录器与typescript文件一起使用吗??在mean stack应用程序中进行服务器端日志记录(ts文件和js文件)的最佳方法是什么???

您是否尝试过
import morgan=require('morgan')?@Titian Cernicova Dragomir
错误TS1202:当目标为ECMAScript模块时,无法使用导入分配。考虑从“mod”、“导入”{a}、从“mod”、“导入d”到“mod”或“另一个模块格式”来使用“导入*as ns”。Titian Cernicova Dragomir认为,<代码>摩根< /C> >是用于HTTP请求日志记录的。我想
winston
在我的应用程序代码中工作,例如,*.component.ts文件