0.6版升级注意事项

1:
pomelo每次升级基本保持向下兼容, 这次升级在api上也完全兼容。
但是这次升级增了服务器与master间的安全链接,因此老项目需要额外添加一个配置文件, 即在config 目录下添加 adminServer.json 的文件:

[{
    "type": "connector",
    "token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
}, {
    "type": "chat",
    "token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
},{
    "type": "gate",
    "token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
}
]

如果老项目需要把这个文件加进去, 再按照自己的serverType配置好。

2:
新版本的pomelo对日志做了整理,getLogger的api有升级

var logger = require('pomelo-logger').getLogger('pomelo', __filename);  

第一个参数为appender,即log4js配置文件对应的项,可以通过appender指定Log输出的地方

后面的参数是prefix,可以自动添加到log消息前面

而pomelo框架里面对所有的日志都输出到pomelo的appender中

应用开发者请指定自己的appender

不建议使用下面这种形式

var logger = require('pomelo-logger').getLogger(__filename);  

这种日志,是不会输出到文件的,因为它没有对应配的appender

标签:无
xiecc 在 2013-8-30 10:24发布
xiecc 在 2013-9-2 14:57重新编辑 分享到 weibo
4 回复
#1 {1} xiecc 2013-8-30 10:28 回复

另外在客户端连接服务端时也添加了安全配置。
如果需要使用pomelo-cli与pomelo list等功能, 需要在config目录下添加adminUser.json,类似格式如下:

[{
    "id": "user-1",
    "username": "admin",
    "password": "admin",
    "level": 1
   }, {
    "id": "user-2",
    "username": "monitor",
    "password": "monitor",
    "level": 2
  },{
    "id": "user-3",
    "username": "test",
    "password": "test",
    "level": 2
  }
]
guolianghu 2013-9-2 12:26 回复

功能丰富了不少,支持!

#2 {6} roytan 2013-9-2 12:06 回复

0.6中如何打开production环境下面的默认log?
以前旧版本可以修改
vi node_modules/pomelo/lib/master/starter.js
//if (env !== ENV_PRODUCTION) {
之后,就可以让log也打印到master中。但是现在0.6好像改了,改到哪里去了?

guolianghu 2013-9-2 12:27 回复

是有点奇怪,假如handler里的语法错误也不会打出来,只有主动try catch才能看到。不知道哪里配置不对。

fantasyni 2013-9-2 13:03 回复

@roytan master 上面传过来的log只会打console了, 不会打文件了

guolianghu 2013-9-2 13:08 回复

@fantasyni 运行时的语法错误到会哪里去的?

guolianghu 2013-9-2 13:09 回复

@fantasyni 方法或者对象不存在之类的。

fantasyni 2013-9-2 14:48 回复

@guolianghu
这个看你的log4js怎么配的,另外由于0.6版本对日志这一块做了整理

你应用的话,需要改改logger

var logger = require('pomelo-logger').getLogger('pomelo', __filename);

第一个参数为appender名字,就是你配的打到的文件

后面的参数是一些log的prefix参数,会添加到log的最前端

fantasyni 2013-9-2 14:48 回复

@guolianghu handler 里有语法错误,是会抛出异常的

#3 {1} roytan 2013-9-2 15:32 回复

加全局log还是得自己动手:

1,在log4js里面加一个新的log类别:

{
      "type": "file",
      "filename": "./logs/runtime.log",
      "maxLogSize": 104857600,
      "layout": {
          "type": "basic"
        }
      ,"backups": 5,
      "category":"runtime"
    }

2,修改vi node_modules/pomelo/lib/master/starter.js

var runtimeLogger = require('pomelo-logger').getLogger('runtime');

var spawnProcess = function(command, host, options, cb) {
  var child = cp.spawn(command, options);
  var prefix = command === 'ssh' ? '[' + host + '] ' : '';

  child.stderr.on('data', function (chunk) {
    var msg = chunk.toString();
    runtimeLogger.info(msg);
    process.stderr.write(msg);
    cb && cb(msg);
  });

  child.stdout.on('data', function (chunk) {
    var msg = prefix + chunk.toString();
    runtimeLogger.info(msg);
    process.stdout.write(msg);
  });

  child.on('exit', function (code) {
    cb && cb(code === 0 ? null : code);
  });
};

ok了,以后就看runtime.log就行了。

fantasyni 2013-9-3 09:38 回复

@roytan

这个master上面的日志,是从其他服务器传过来的,一般不需要同步到文件打印的

只打console就行了

log4js 对于文件的输出还是很耗的

而且线上的话,一般部署都会用 nohup 或者其他什么的,可以把 console 的日志同步到一个指定的文件的

#4 halfblood 2013-9-2 18:04 回复

这两功能真是神器啊,期待已久!尤其是构建大型项目时候必不可少的……

回到顶部