如何在平均堆栈应用程序中使用Winston记录器

时间:2018-07-06 07:30:31

标签: typescript mean-stack winston

我想在我的平均堆栈应用程序中使用'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'记录器与打字稿文件一起使用吗?在普通堆栈应用程序中进行服务器端日志记录(ts文件和js文件)的最佳方法是什么?

0 个答案:

没有答案