Node.js Winston日志记录

 佳山申士_636 发布于 2023-02-07 09:34

在我的节点应用程序中,我使用"Winston"日志记录在单独的文件中打印错误.

我按照本教程.

当我试图从其他文件访问记录器....

我的代码:

var winston = require('winston');
var fs = require('fs');

fs.mkdir('./logs', function(err) {
    if (err) throw err;
});

// Define levels to be like log4j in java
var customLevels = {
  levels: {
    debug: 0,
    info: 1,
    warn: 2,
    error: 3
  },
  colors: {
    debug: 'blue',
    info: 'green',
    warn: 'yellow',
    error: 'red'
  }
};

// create the main logger
var logger = new(winston.Logger)({
    level: 'debug',
    levels: customLevels.levels,
    transports: [
        // setup console logging
        new(winston.transports.Console)({
            level: 'info', // Only write logs of info level or higher
            levels: customLevels.levels,
            colorize: true
        }),
        // setup logging to file
        new(winston.transports.File)({
            filename: './logs/project-debug.log',
            maxsize: 1024 * 1024 * 10, // 10MB
            level: 'debug',
            levels: customLevels.levels
        })
    ]
});

// create the data logger - I only log specific app output data here
var datalogger = new (winston.Logger) ({
    level: 'info',
    transports: [
        new (winston.transports.File) ({
            filename: './logs/project-data.log',
            maxsize: 1024 * 1024 * 10 // 10MB
        })
    ]
});

// make winston aware of your awesome colour choices
winston.addColors(customLevels.colors);

var Logging = function() {
    var loggers = {};

    // always return the singleton instance, if it has been initialised once already.
    if (Logging.prototype._singletonInstance) {
        return Logging.prototype._singletonInstance;
    }

    this.getLogger = function(name) {
        return loggers[name];
    }

    Logging.prototype.get = this.getLogger;

    loggers['project-debug.log'] = logger;
    loggers['project-data.log'] = datalogger;

    Logging.prototype._singletonInstance = this;
};

new Logging(); // I decided to force instantiation of the singleton logger here

logger.info('Logging set up OK!');

module.exports = Logging;

抛出错误:

Logging() is undefined.

Ivan Vergili.. 8

该教程似乎有一堆错误.我打电话给它

var logger = logging.Logging().get('project-debug.log');

请注意.log参数中的内容.参数必须匹配loggers数组中定义的名称之一.

2 个回答
  • 该教程似乎有一堆错误.我打电话给它

    var logger = logging.Logging().get('project-debug.log');
    

    请注意.log参数中的内容.参数必须匹配loggers数组中定义的名称之一.

    2023-02-07 09:36 回答
  • 我花了好几个小时,这是我的解决方案:不要创建新的Logger,只需更改默认的.

    创建一个模块lib/logger.js:

    var logger = require('winston');
    logger.setLevels({debug:0,info: 1,silly:2,warn: 3,error:4,});
    logger.addColors({debug: 'green',info:  'cyan',silly: 'magenta',warn:  'yellow',error: 'red'});
    logger.remove(logger.transports.Console);
    logger.add(logger.transports.Console, { level: 'debug', colorize:true });
    module.exports = logger;
    

    用于app.js:

    var logger = require('./lib/log.js');  
    

    使用所有其他模块:

    var logger = require('winston');        
    

    2023-02-07 09:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有