Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

我在log4js.json中自定义了几个category,在代码中使用它,但日志不能生成到文件中,只输出到控制台 #1

Open
ydhl opened this issue Nov 28, 2013 · 22 comments

Comments

@ydhl
Copy link

ydhl commented Nov 28, 2013

我在log4js.json中自定义了几个category,在代码中使用它,但日志不能生成到文件中,只输出到控制台。
请问是什么原因,还要配置什么呢

@fantasyni
Copy link
Member

1:var rpc_logger = require('pomelo-logger').getLogger('rpc-log', __filename);
对应的category你使用了吗
2:log4js.json 怎么写的?

@ydhl
Copy link
Author

ydhl commented Nov 28, 2013

{
"appenders": [
{
"type": "console"
},
{
"type": "dateFile",
"filename": "./logs/spider.log",
"pattern": "-yyyy-MM-dd",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
}
,"backups": 5,
"category":"spider"
} ,
{
"type": "dateFile",
"filename": "./logs/sendprice.log",
"pattern": "-yyyy-MM-dd",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
}
,"backups": 5,
"category":"sendprice"
},
{
"type": "dateFile",
"filename": "./logs/process.log",
"pattern": "-yyyy-MM-dd",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
}
,"backups": 5,
"category":"process"
}
],

"levels": {
"process":"DEBUG",
"sendprice":"DEBUG",
"spider":"DEBUG",
"con-log" : "DEBUG",
"admin-log" : "DEBUG",
"crash-log" : "DEBUG",
"pomelo" : "DEBUG",
"rpc-log" : "DEBUG",
"forward-log": "DEBUG"
},

"replaceConsole": true,

"lineDebug": true
}

这是我的log4js.json,其中pomelo的category这里我就不帖上来了

我使用的代码:
var logger = require('pomelo-logger').getLogger("spider", game_code, process.pid);

var var1 = “world”
logger.debug("hello %s",var1); 控制台输出hello world
但spider日志文件是空

@ydhl
Copy link
Author

ydhl commented Nov 29, 2013

有人出来帮助一下吗?

@fantasyni
Copy link
Member

你 levels 不要配试试?

@ydhl
Copy link
Author

ydhl commented Nov 30, 2013

level配置去掉了,但还是没有写到日志文件中,日志文件还是空的
如果不配置level默认是什么级别?

@ydhl
Copy link
Author

ydhl commented Nov 30, 2013

而且控制台日志的输出总觉得有点怪:

�[32m[2013-11-30 08:57:10.729] [INFO] console - �[39m�[36m[2013-11-30 08:57:10.729] [DEBUG] spider - .....

先是[INFO] console -然后是[DEBUG] spider -

我感觉应该没有[INFO] console -这一节,应该直接就是[DEBUG] spider -

@ydhl
Copy link
Author

ydhl commented Dec 3, 2013

升级pomelo为0.7.5问题不存在了,但有时会报
log4js.fileAppender - Writing to file logs/process.log, error happened [Error: write after end]

@ydhl ydhl closed this as completed Dec 3, 2013
@ydhl
Copy link
Author

ydhl commented Jan 3, 2014

升级到pomelo 0.8.1后又不能写到日志文件了

@ydhl ydhl reopened this Jan 3, 2014
@py8765
Copy link
Collaborator

py8765 commented Jan 3, 2014

情况能具体描述一下吗?哪里的日志写不到文件里。

@btspoony
Copy link

btspoony commented Jan 7, 2014

我也碰到这个问题了~~
会不会是因为在自己的逻辑代码中require的pomelo-logger(这个是在自己的工程中npm install的)和pomelo的代码中require的pomelo-logger不是同一份导致的?

------ 实验结果分割线 -----

已证实上面的想法:
简单测试:
log4js.json中配置:

   {
      "type": "file",
      "filename": "${opts:base}/logs/gameplay-${opts:serverId}.log",
      "maxLogSize": 1048576,
      "layout": {
          "type": "basic"
        }
      ,"backups": 5,
      "category":"gameplay"
    },

在创建的工程中引入pomelo-logger, 并在app.js于pomelo.createApp()后添加一行

   require('pomelo-logger').getLogger('gameplay', __filename).info("hello world");

在pomelo的lib/application.js的init函数最后一行添加

   require('pomelo-logger').getLogger('gameplay', __filename).info("this'is bad");

生成的log文件中只出现了一行:

[INFO] gameplay - �68: [/Users/bibi/SourceCode/pomelo/lib/application.js] �this'is bad

------ 解决方案询问 -----

  • 是否需要在自己的代码中重新进行一下logger.configure?
  • 或为pomelo导出logger?
  • 或者干脆不用logger而直接用log4js...

------ 临时解决方案 -----

在createApp后添加此段,即上文第一个解决方案后,文件写入正常!

var serverId = app.getServerId();
var base = app.getBase();
require('pomelo-logger').configure( base+"/config/log4js.json" , {serverId: serverId, base: base} );

@py8765
Copy link
Collaborator

py8765 commented Jan 7, 2014

pomelo 里面的日志是根据game-server/config/log4js.json进行配置;项目如果需要通过pomelo-logger打日志也可以用这个配置,只是需要重新configure一下。

@DoubleSpout
Copy link

同意@btspoony 所说,确实有这个问题,目前我这边0.8.0也发现自定义日志无法写入,确实由于加载的pomelo-logger包不是一个所致,建议在app里增加一个logger的api,这样就方便我们打日志了。
目前我解决方法是修改pomelo源码的\node_modules\pomelo\lib\util\log.js下增加

/**
 * Configure pomelo logger
 */
module.exports.configure = function(app, filename) {
  var serverId = app.getServerId();
  var base = app.getBase();
  logger.configure(filename, {serverId: serverId, base: base});
  app.logger = logger; //增加这个
};

使用也挺简单

var logger = this.app.logger.getLogger('pomelo-gate');
logger.error('*********************** %s', 'mylog mylog');

不知道这样会不会有问题

@py8765
Copy link
Collaborator

py8765 commented Jan 20, 2014

把logger挂在application下面是可以的,就是感觉写起来比较麻烦;其实只需要在项目中配置一下logger就可以用了。

@shinelazy
Copy link

发现个问题当node_modules/pomelo/node_modules/也存在pomelo-logger库的时候会出现这个问题。删掉这个依赖库就好了,只要node_modules/下有这个库就行了

@ctbinzi
Copy link

ctbinzi commented Sep 12, 2014

我现在Pomelo版本是1.0.3,pomelo-logger版本是0.1.6,按照pomelo-logger的README的做法也出现日志无法写入文件的问题

@ctbinzi
Copy link

ctbinzi commented Sep 12, 2014

@shinelazy 确实管用,谢谢 @shinelazy

@zhaoyier
Copy link

@shinelazy 确实是这样的

@Lellansin
Copy link

Works! 感谢 @shinelazy

@jipan25
Copy link

jipan25 commented Oct 19, 2015

同样的问题,采用的 在app.js中 重新配置的方法

var serverId = app.getServerId();
var base = app.getBase();
require('pomelo-logger').configure( base+"/config/log4js.json" , {serverId: serverId, base: base} );

@ztidal
Copy link

ztidal commented Dec 11, 2015

当game-server/node_modules/pomelo-logger 和 game-server/node_modules/pomelo/mode_modules/pomelo-logger同时存在时,发生此问题,删掉pomelo下的pomelo-logger试试。
参考链接:http://blog.csdn.net/ctbinzi/article/details/39231543

@jeff-ccj
Copy link

jeff-ccj commented May 13, 2016

同问,只能输出控制台而不输出到日志文件,但日志文件有生成

调用

var pomelo = require('pomelo-logger')
pomelo.configure(path.join(__dirname, '../logger.json'))
var logger = pomelo.getLogger('log', __filename, process.pid)

配置文件

{
  "appenders": [
    {
      "type": "console"
    },
    {
      "type": "file",
      "filename": "./logs/con-log-${opts:serverId}.log",
      "pattern": "connector",
      "absolute": true,
      "layout": {
        "type": "basic"
      },
      "alwaysIncludePattern": true,
      "category": "logInfo"
    }
  ],
  "levels": {
    "logInfo": "DEBUG"
  },
  "replaceConsole": true,
  "lineDebug": true,
  "rawMessage": true
}

@smilence86
Copy link

@shinelazy 感谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests