/**
 * Created by chen on 2017/9/4.
 */
let helper = {};
module.exports.logger = helper;

let log4js = require('log4js');
let fs = require("fs");
let path = require("path");

// 加载配置文件
let objConfig = JSON.parse(fs.readFileSync(__dirname+"/log4js.json", "utf8"));

// 加载基础配置
if(objConfig.appenders){
    let baseDir = objConfig["customBaseDir"];
    let defaultAtt = objConfig["customDefaultAtt"];
    for(let key in objConfig.appenders){
        var item = objConfig.appenders[key];
        if(item["type"] == "console")
            continue;
        if(defaultAtt != null){
            for(let att in defaultAtt){
                if(item[att] == null)
                    item[att] = defaultAtt[att];
            }
        }
        if(baseDir != null){
            if(item["filename"] == null)
                item["filename"] = baseDir;
            else
                item["filename"] = baseDir + item["filename"];
        }
    }
}


log4js.configure(objConfig);

let logDebug = log4js.getLogger('logDebug');
let logInfo = log4js.getLogger('logInfo');
let logWarn = log4js.getLogger('logWarn');
let logErr = log4js.getLogger('logErr');

console.log = logInfo.info.bind(logInfo);//把控制台信息输出到文件中

helper.debug = function(msg){
    if(msg == null)
        msg = "";
    logDebug.debug(msg);
};

helper.info = function(msg){
    if(msg == null)
        msg = "";
    logInfo.info(msg);
};

helper.warn = function(msg){
    if(msg == null)
        msg = "";
    logWarn.warn(msg);
};

helper.err = function(msg, exp){
    if(msg == null)
        msg = "";
    if(exp != null)
        msg += "\r\n" + exp;
    logErr.error(msg);
};

// 配合express用的方法
module.exports.use = function(app) {
    //页面请求日志, level用auto时,默认级别是WARN
    app.use(log4js.connectLogger(logDebug, {level:'debug', format:':method :url'}));
}



