NodeJS - Winston

Winston是Node.js广泛使用的日志库,提供多传输功能,允许在不同设备上储存日志。配置文件如config.js和production.js定义了日志级别和存储方式。日志文件以日期区分,例如access-2018-11-11.log和jobs-2018-11-11.log。易于集成并灵活使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Winston是Node.js最流行的日志框架之一,设计为一个简单通用的日志库,支持多传输(在Winston中,一个传输实质上代表储存设备,也就是数据最终保存在哪里),每个Winston实例都可以对不同级别的日志配置不同的传输。
  • config.js中的配置
const winston = require('winston');

let initLoggerConfig = function (config) {
    /**
     * Create logger
     */
    let logger = new (winston.Logger)(config.logger),
        jobLogger = new(winston.Logger)(config.jobLogger);

    config.log = function () {
        logger.log(arguments);
    };

    config.info = function () {
        logger.info(arguments);
    };

    config.error = function () {
        logger.error(arguments);
    };

    config.debug = function () {
        logger.debug(arguments);
    };

    config.jobInfo = function () {
        jobLogger.info(arguments);
    };
    
    config.jobError = function () {
        jobLogger.error(arguments);
    };
};
  • production.js中的配置
const path = require('path'),
    winston = require('winston'),
    DailyRotateFile = require('winston-daily-rotate-file');
module.exports = {
    env: 'production',
    logger: {
        transports: [
            new winston.transports.Console({
                colorize: true
            }),
            new DailyRotateFile({
                level: 'silly',
                filename: path.resolve('./logs/access-'),
                datePattern: 'yyyy-MM-dd.log',
                maxsize: 5242880 /* 5MB */
            })
        ]
    },
    jobLogger: {
        transports: [
            new winston.transports.Console({
                colorize: true
            }),
            new DailyRotateFile({
                level: 'silly',
                filename: path.resolve('./logs/jobs-'),
                datePattern: 'yyyy-MM-dd.log',
                maxsize: 5242880 /* 5MB */
            })
        ]
    },
    showErrorStack: process.env.SHOW_ERROR_STACK === 'true',
    livereload: false
};
  • 即config.js中的配置实际上是这样的
	let logger = new (winston.Logger)(config.logger)
	为
	let logger = new (winston.Logger)(
	{
        transports: [
            new winston.transports.Console({
                colorize: true
            }),
            new DailyRotateFile({
                level: 'silly', // 要记录的消息级别。0:error 1:warn 2:info 3:verbose 4:debug 5:silly 
                filename: path.resolve('./logs/access-'), // 用于将日志数据写入的文件。
                datePattern: 'yyyy-MM-dd.log',
                maxsize: 5242880 /* 5MB */
            })
        ]
    }
  )
  • 生成日志文件示例
    access-2018-11-11.log
    jobs-2018-11-11.log
  • 使用
config.info('创建审方订单成功2。');
config.error('创建审方订单成功3。');
config.debug('创建审方订单成功4。');
  • 输出
{"level":"info","message":"{ '0': '创建审方订单成功2。' }","timestamp":"2018-11-28T09:57:18.841Z"}
{"level":"error","message":"{ '0': '创建审方订单成功3。' }","timestamp":"2018-11-28T09:57:18.843Z"}
{"level":"debug","message":"{ '0': '创建审方订单成功4。' }","timestamp":"2018-11-28T09:57:18.843Z"}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值