通过Wiston创建log,一天一文件

该博客介绍如何利用Winston模块在Node.js中创建日志系统,确保每天的日志记录在不同的文件中。通过DailyRotateFile transporter,设置日志路径、日期格式和最大文件大小,实现了日志的滚动管理。同时,定义了info和error方法,分别用于记录应用信息和错误信息。

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

/**
 * User access, app run and error log.
 *
 * @module Logger
 */

//import
var fs = require('fs');
var util = require('util');
var winston = require('winston');
var mkdirp = require('mkdirp');


var logPath = "./logs";
if(!fs.existsSync(logPath)){
    mkdirp.sync(logPath);
    //console.log(util.format('Log Path: %s', logPath));
};

function createLogger(fileName){
    /*var logger = winston.add(winston.transports.DailyRotateFile, {
      filename: util.format('%s/%s', logPath, fileName),
      datePattern: '-yyyy-MM-dd.log'
    });
    logger.remove(winston.transports.Console);
    return logger;*/

    var logger = new (winston.Logger)({
        transports: [
          new (winston.transports.DailyRotateFile)({ 
            filename: util.format('%s/%s', logPath, fileName),
            datePattern: '-yyyy-MM-dd.log',
            maxsize: 1024 * 1024 * 10 // 10MB 
          })
        ]
    });
    return logger;
}

/**
 * Create an logger.
 *
 * @class Logger
 * @constructor
 */
function Logger(){
    this.appLog = createLogger('app');
    this.errorLog = createLogger('error');
    this.accessLog = createLogger('access');
}

/**
 * Info Logger
 *
 * @method info
 * @param {message}
 *          log info message.
 */
Logger.prototype.info = function(message){
    this.appLog.info(message);
};

/**
 * Error Logger
 *
 * @method error
 * @param {message}
 *          error message.
 */
Logger.prototype.error = function(message){
    var msg = '';
    if(typeof(message) == 'string')
        msg = message;
    else if(typeof(message) == 'object'){
        if(typeof(message.toString) == 'function')
            msg = message.toString();
        else
            msg = JSON.stringify(message);
    }
    this.errorLog.error(msg);
};

module.exports = new Logger();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值