当前位置 : 主页 > 网络编程 > JavaScript >

node - 日志 - 代码模块

来源:互联网 收集:自由互联 发布时间:2021-06-30
logger.js - 日志模块 /** * 模块依赖: * winston:日志库 * common:自己的公共库 */let winston = require('winston');let common = require('./common');// 存储路径let path = './storage/logs/';/** * 不暴露方法定义 *
logger.js - 日志模块
/**
 * 模块依赖:
 *      winston:日志库
 *      common:自己的公共库
 */
let winston = require('winston');
let common = require('./common');

// 存储路径
let path = './storage/logs/';

/**
 * 不暴露方法定义
 */
class Self {

    /**
     * 获取文件名
     *
     * @returns {*}
     * @private
     */
    static _getFile () {
        return common.sprintf(path + '%s.log', common.now());
    }

    /**
     * 格式化输出日志
     *
     * @param options
     * @returns {string}
     */
    static _logFormatter(options) {

        let msg = '';
        // 是否有错误码
        if (options.meta.code) {
            msg = common.sprintf('[时间]: %s; [级别]: %s; [错误码]: %s; [信息]: %s; [文件]: %s; [行数]: %s; [自定义参数]: %s',
                common.nowTime(),
                options.level,
                options.meta.code,
                options.message,
                __preFile,
                __preLine,
                JSON.stringify(options.meta.context)
            );
        } else {
            msg = common.sprintf('[时间]: %s; [级别]: %s; [信息]: %s; [文件]: %s; [行数]: %s; [自定义参数]: %s',
                common.nowTime(),
                options.level,
                options.message,
                __preFile,
                __preLine,
                JSON.stringify(options.meta.context)
            );
        }

        return msg;
    };
}


/**
 * 变量定义
 */
// 获取Logger实例
let logger = new (winston.Logger)({
    transports: [
        // 输出到Console
        new (winston.transports.Console)({
            formatter: Self._logFormatter,
            json: false
        }),

        // 输出到File
        new (winston.transports.File)({
            filename: Self._getFile(),
            formatter: Self._logFormatter,
            json: false
        })
    ]
});



/**
 * 暴露方法
 */
module.exports = {
    /**
     * 记录Error日志
     */
    logError: function (message, code = 500, contextObj = {}) {

        logger.error(message, {
            code: code,
            context: contextObj
        });
    },

    /**
     * 记录Warning日志
     */
    logWarning: function (message, contextObj = {}) {

        logger.warn(message, {
            context: contextObj,
        });
    },

    /**
     * 记录Info日志
     */
    logInfo: function (message, contextObj = {}) {

        logger.info(message, {
            context: contextObj,
        });
    },
}
日志使用
var logger = require('./logger');

// 记录日志
logger.logInfo("mig");
logger.logError("aaa", 300, {key: "adfa"});
storage/logs/2017-08-03.log 文件内容示例:
[时间]: 2017-08-03 19:05:27; [级别]: info; [信息]: mig; [文件]: /Users/mingwang/Documents/Project/temp/node/FirstNodeProject/node_modules/winston/lib/winston/common.js; [行数]: 218; [自定义参数]: {}
[时间]: 2017-08-03 19:05:27; [级别]: error; [错误码]: 300; [信息]: aaa; [文件]: /Users/mingwang/Documents/Project/temp/node/FirstNodeProject/node_modules/winston/lib/winston/common.js; [行数]: 218; [自定义参数]: {"key":"adfa"}
common.js - 见公共模块
common.js - 见公共模块
网友评论