node.js日志封装

var log4js = require("log4js");

function init(_log_filepath, _log_filename) {
    let logfile = _log_filepath + "/" + _log_filename + ".log";
    let logfile_error = _log_filepath + "/" + _log_filename + ".error.log";
    let layout = {
        type: "pattern",
        pattern: "[%d{yyyy-MM-dd hh:mm:ss.SSS}] [%p] %m",
    };

    log4js.configure({
        appenders: {
            console: {
                type: "console",
                layout: layout,
            },
            file: {
                // file只是个标识字符串,可以是任意
                type: "fileSync",
                filename: logfile,
                maxLogSize: 10 * 1024 * 1024, // 10MB
                backups: 10,
                layout: layout,
            },
            file_error: {
                type: "fileSync",
                filename: logfile_error,
                maxLogSize: 1024 * 1024, // 10MB
                backups: 5,
                layout: layout,
            },
        },
        categories: {
            default: { appenders: ["file", "console"], level: "trace" },
            curstom_error: { appenders: ["file_error"], level: "warn" },
        },
    });

    var logger = log4js.getLogger("");
    var logger_curstom_error = log4js.getLogger("curstom_error");

    //===============================================================
    // Logger
    // 封装参考:https://stackoverflow.com/questions/56097580/override-console-logerror-with-winston-no-longer-working/56098264

    // v1
    //     console.trace = (...args) => logger.trace.call(logger, ...args);
    //     console.debug = (...args) => logger.debug.call(logger, ...args);
    //     console.info = (...args) => logger.info.call(logger, ...args);
    //     console.log = (...args) => logger.info.call(logger, ...args);
    //     console.warn = (...args) => logger.warn.call(logger, ...args);
    //     console.error = (...args) => logger.error.call(logger, ...args);

    // v2
    console.trace = function (...args) {
        logger_curstom_error.trace.call(logger_curstom_error, ...args);
        return logger.trace.call(logger, ...args);
    };
    console.debug = function (...args) {
        logger_curstom_error.debug.call(logger_curstom_error, ...args);
        return logger.debug.call(logger, ...args);
    };
    console.info = function (...args) {
        logger_curstom_error.info.call(logger_curstom_error, ...args);
        return logger.info.call(logger, ...args);
    };
    console.log = function (...args) {
        logger_curstom_error.info.call(logger_curstom_error, ...args);
        return logger.info.call(logger, ...args);
    };
    console.warn = function (...args) {
        logger_curstom_error.warn.call(logger_curstom_error, ...args);
        return logger.warn.call(logger, ...args);
    };
    console.error = function (...args) {
        logger_curstom_error.error.call(logger_curstom_error, ...args);
        return logger.error.call(logger, ...args);
    };
}

module.exports = {
    init: init,
};

 

使用:

var logwrap = require("./util/logwrap.js");
let filename = __filename.slice(__dirname.length + 1);
logwrap.init("./bin", filename);
 
后面可以正常的console.log,console.error了
 
 
 
github项目weiqi_picture_spider(私)

 

posted on 2021-04-23 09:12  拥剑公子  阅读(157)  评论(0编辑  收藏  举报

导航