nodejs 入坑 restful服务框架日志配置(二)

对于一个服务来讲,强大的日志系统功不可没,就进行log4js进行探索也不要多么精通,只需要能用会用即可。

根据网上了解,使用log4js主要需要进行两个步骤:配置和封装,

再次贴上了我的log.json配置,想要深入了解log4js的各种机制和使用,可以自行百度,由下可以对需要的日志内容进行分类处理

{
  "replaceConsole": true,
  "appenders": {
    "console":{"type": "console", "category": "console"},
    "http":{"type": "dateFile", "filename": "./log/url/","pattern": "yyyyMMddhh.txt", "maxLogSize": 10000000,"alwaysIncludePattern": true},
    "logDebug":{"type": "dateFile", "filename": "./log/debug/","pattern": "yyyyMMddhh.txt", "maxLogSize": 10000000,"alwaysIncludePattern": true},
    "logInfo":{"type": "dateFile","filename": "./log/info/","pattern": "yyyyMMddhh.txt", "maxLogSize": 10000000, "alwaysIncludePattern": true},
    "logWarn":{"type": "dateFile","filename": "./log/warm/","pattern": "yyyyMMddhh.txt", "maxLogSize": 10000000,  "alwaysIncludePattern": true},
    "logErr":{"type": "dateFile","filename": "./log/error/","pattern": "yyyyMMddhh.txt", "maxLogSize": 10000000, "alwaysIncludePattern": true}
    },
  "categories": {
    "default": {
      "appenders": [
        "console"
      ],
      "level": "all"
    },
    "info": {
      "appenders": [
        "logInfo"
      ],
      "level": "info"
    },
    "debug": {
      "appenders": [
        "logDebug"
      ],
      "level": "debug"
    },
    "warn": {
      "appenders": [
        "logWarn"
      ],
      "level": "WARN"
    },
    "error": {
      "appenders": [
        "logErr"
      ],
      "level": "error"
    },
    "httpurl": {
      "appenders": [
        "http"
      ],
      "level": "debug"
    }
  }



}

接下来就是封装,封装代码如下

var helper = {};
exports.helper = helper;

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

// 加载配置文件
var objConfig = require("../../log.json");
// 检查配置文件所需的目录是否存在,不存在时创建

// 目录创建完毕,才加载配置,不然会出异常
log4js.configure(objConfig);

var logDebug = log4js.getLogger('debug');
var logInfo = log4js.getLogger('info');
var logWarn = log4js.getLogger('warn');
var logErr = log4js.getLogger('error');
var logHttp = log4js.getLogger('httpurl');
helper.writeDebug = function(msg){
    if(msg == null)
        msg = "";
    logDebug.debug(msg);
};

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

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

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

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

使用就只要用如下代码就可以了

  log.writeInfo("db connectting...");

遇到问题分析

1 问题主要在配置上,appenders的类别和categories的类别混淆,在封装的时候调用的时categories。

2 pattern字段和alwaysIncludePattern合起来使用才能实现日志文件生成目录的一起生成,否则按照filename来定义。

你可能感兴趣的:(nodejs)