• 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(私)
  • 相关阅读:
    工业相机基础知识
    软件测试最常用的 SQL 命令 | 掌握基本查询、条件查询、聚合查询
    一文掌握软件测试常用SQL命令
    PageObject设计模式在 UI 自动化中的实践(QQ 邮箱登陆为例)
    测试开发必备--搞定PO设计模式
    Junit5 + YAML 参数化和数据驱动,让 App 自动化测试更高效(一)
    快速搞定APP移动端自动化测试
    接口自动化测试的 “能” 与 “不能”
    如何精通接口测试?
    测试开发必备:Dubbo-admin+Zookeeper 的环境搭建实操
  • 原文地址:https://www.cnblogs.com/wjx0912/p/14692321.html
Copyright © 2020-2023  润新知