技术文章 > 服务端 > pomelo 用户指南-日志管理 

Pomelo 日志管理

Pomelo 日志是通过 pomelo-logger 模块来管理的,pomelo-logger 是对 log4js 的简单封装,并提供了一些非常有用的特色功能。
日志是通过 category 来进行管理与维护的,可以在 log4js.json 文件中进行配置:
{
  "appenders": [
    {
      "type": "console"
    },
    {
      "type": "file",
      "filename": "./logs/con-log-${opts:serverId}.log",
      "pattern": "connector",
      "maxLogSize": 1048576,
      "layout": {
        "type": "basic"
      },
      "backups": 5,
      "category": "con-log"
    },
    {
      "type": "file",
      "filename": "./logs/rpc-log-${opts:serverId}.log",
      "maxLogSize": 1048576,
      "layout": {
        "type": "basic"
      },
      "backups": 5,
      "category": "rpc-log"
    },
    {
      "type": "file",
      "filename": "./logs/forward-log-${opts:serverId}.log",
      "maxLogSize": 1048576,
      "layout": {
        "type": "basic"
      },
      "backups": 5,
      "category": "forward-log"
    },
    {
     "type": "file",
     "filename": "./logs/rpc-debug-${opts:serverId}.log",
     "maxLogSize": 1048576,
     "layout": {
      "type": "basic"
     },
     "backups": 5,
     "category": "rpc-debug"
    },
    {
      "type": "file",
      "filename": "./logs/crash.log",
      "maxLogSize": 1048576,
      "layout": {
        "type": "basic"
      },
      "backups": 5,
      "category":"crash-log"
    },
    {
      "type": "file",
      "filename": "./logs/admin.log",
      "maxLogSize": 1048576,
      "layout": {
          "type": "basic"
        }
      ,"backups": 5,
      "category":"admin-log"
    },
    {
      "type": "file",
      "filename": "./logs/pomelo.log",
      "maxLogSize": 1048576,
      "layout": {
          "type": "basic"
        }
      ,"backups": 5,
      "category":"pomelo"
    }
  ],

  "levels": {
    "rpc-log" : "ERROR",
    "forward-log": "ERROR"
  },

  "replaceConsole": true,
  "lineDebug": false
}
从配置文件中可以看出,除了 console 项外,每一项都配了 category,pomelo-logger 通过 getLogger 的第一个参数指定 category 来把该 logger 输出的日志定向到该 category 配置的文件或者其它输出方案。
你可以添加自己的 category,并在 getLogger 指定该 category,你就可以把日志定向到该 category 所配的输出方案。
注意:不建议使用不指定 category 的方式来进行配置,这样子所有的 logger 都会定向到该全局的输出方案。

日志 category

在 pomelo 中有些指定的 category 用于输出日志:

日志 levels

可以通过指定日志的 levels 来控制输出的日志:
"levels": {
    "rpc-log" : "ERROR",
    "forward-log": "ERROR"
}
日志等级从左到右依次提升:TRACE, DEBUG, INFO, WARN, ERROR, FATAL。 在 levels 上等级配的越低,输出的日志范围则越大,相反,则输出的日志范围越小。比如:
var rpc_logger = require('pomelo-logger').getLogger('rpc-log', __filename);
rpc_logger.info("msg");
这里 rpc_logger 的输出日志等级是 INFO,而 levels 上配的是 ERROR,那么该日志就不会被输出到对应的 appenders 上面。你需要 levels 改成低于 INFO 的级别,比如 DEBUG 才会把 rpc_logger 的日志输出。

日志配置项说明



来源:摘自 https://github.com/NetEase/pomelo/wiki/pomelo%E6%97%A5%E5%BF%97%E7%AE%A1%E7%90%86,本站 行痴 整理