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 添加新的日志文件,导致提示MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGHUP listeners added. Use emitter.setMaxListeners() to increase limitError #62

Closed
ggbond-github opened this issue Feb 12, 2019 · 11 comments

Comments

@ggbond-github
Copy link

log4.json 里面新增加了日志文件,导致提示超过最大监听数量,当设置成案例默认的日志文件的时候没有问题,这个错误是需要改源码还是配置参数,希望有人看到了告知一下,项目以后还会定制添加很多日志文件,谢谢。

@whtiehack
Copy link
Member

有空的话请把你的修改和问题描述清楚一点。明天帮你分析分析。

@ggbond-github
Copy link
Author

{
"appenders": {
"console": {
"type": "console"
},
"con-log": {
"type": "file",
"filename": "${opts:base}/logs/con-log-${opts:serverId}.log",
"pattern": "connector",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"rpc-log": {
"type": "file",
"filename": "${opts:base}/logs/rpc-log-${opts:serverId}.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"forward-log": {
"type": "file",
"filename": "${opts:base}/logs/forward-log-${opts:serverId}.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"rpc-debug": {
"type": "file",
"filename": "${opts:base}/logs/rpc-debug-${opts:serverId}.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"crash-log": {
"type": "file",
"filename": "${opts:base}/logs/crash.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"admin-log": {
"type": "file",
"filename": "${opts:base}/logs/admin.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"pomelo": {
"type": "file",
"filename": "${opts:base}/logs/pinus-${opts:serverId}.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"pinus-admin": {
"type": "file",
"filename": "${opts:base}/logs/pinus-admin.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"pinus-rpc": {
"type": "file",
"filename": "${opts:base}/logs/pinus-rpc-${opts:serverId}.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
}
},
"categories": {
"default": {
"appenders": [
"console",
"con-log",
"rpc-log",
"forward-log",
"rpc-debug",
"crash-log",
"admin-log",
"pomelo",
"pinus-admin",
"pinus-rpc"
],
"level": "debug"
}
},
"prefix": "${opts:serverId} ",
"replaceConsole": true,
"lineDebug": false,
"errorStack": true
}
这是项目里面log4js.json 的默认配置

@ggbond-github
Copy link
Author

{
"appenders": {
"console": {
"type": "console"
},
"con-log": {
"type": "file",
"filename": "${opts:base}/logs/con-log-${opts:serverId}.log",
"pattern": "connector",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"rpc-log": {
"type": "file",
"filename": "${opts:base}/logs/rpc-log-${opts:serverId}.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"forward-log": {
"type": "file",
"filename": "${opts:base}/logs/forward-log-${opts:serverId}.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"rpc-debug": {
"type": "file",
"filename": "${opts:base}/logs/rpc-debug-${opts:serverId}.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"crash-log": {
"type": "file",
"filename": "${opts:base}/logs/crash.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"admin-log": {
"type": "file",
"filename": "${opts:base}/logs/admin.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"pomelo": {
"type": "file",
"filename": "${opts:base}/logs/pinus-${opts:serverId}.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"pinus-admin": {
"type": "file",
"filename": "${opts:base}/logs/pinus-admin.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"pinus-rpc": {
"type": "file",
"filename": "${opts:base}/logs/pinus-rpc-${opts:serverId}.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"cnjj-log": {
"type": "file",
"filename": "${opts:base}/logs/cnjj-log.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
},
"global-log": {
"type": "file",
"filename": "${opts:base}/logs/global-log.log",
"maxLogSize": 1048576,
"layout": {
"type": "basic"
},
"backups": 5
}
},
"categories": {
"default": {
"appenders": [
"console",
"con-log",
"rpc-log",
"forward-log",
"rpc-debug",
"crash-log",
"admin-log",
"pomelo",
"pinus-admin",
"pinus-rpc",
"cnjj-log",
"global-log"
],
"level": "debug"
}
},
"prefix": "${opts:serverId} ",
"replaceConsole": true,
"lineDebug": false,
"errorStack": true
}
当我添加了 cnjj-log 和global-log的日志后启动项目就报错了

@ggbond-github
Copy link
Author

[2019-02-12T11:35:20.593] [ERROR] logger - [adminConnector-server-1 console] (node:16316) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGHUP listeners added. Use emitter.setMaxListeners() to increase limitError
at Object.pLogger.(anonymous function) [as error] (C:\all\cnjj-server-ts\node_modules\pinus-logger\lib\logger.ts:72:34)
at writeOut (internal/process/warning.js:18:20)
at output (internal/process/warning.js:69:3)
at process.on (internal/process/warning.js:100:7)
at emitOne (events.js:116:13)
at process.emit (events.js:211:7)
at internal/process/warning.js:74:13
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:686:11)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3

这是报错的堆栈

@ggbond-github
Copy link
Author

把我加的那两个日志配置删除,启动就不会报上面的错

@whtiehack
Copy link
Member

log4js-node/log4js-node#700

这个是 log4js的问题。
pinus-logger只是对 log4js的一层简单封装。

@ggbond-github
Copy link
Author

那有没有什么办法可以解决这个问题呢

@whtiehack
Copy link
Member

对 log4js不太了解。 抱歉帮不上忙。
我用的是 @mybios 给我的精简版配置,不写日志文件的。

可以给你参考一下

{
    "appenders": {
        "displayConsole": {
            "type": "console"
        },
        // "other": {
        //     "type": "file",
        //     "filename": "${opts:base}/logs/${opts:serverId}.log",
        //     "maxLogSize": 1048576,
        //     "layout": {
        //         "type": "basic"
        //     },
        //     "backups": 5
        // }
    },
    "categories": {
        "default": {
            "appenders": [
                /*"other",*/"displayConsole"
            ],
            "level": "debug"
        }
    },
    "replaceConsole": true,
    "prefix": "${opts:serverId} ",
    "lineDebug": false,
    "errorStack": true
}

@ggbond-github
Copy link
Author

好的 谢谢

@yueguanyu
Copy link

老哥,这个报错说的是对一个eventEmitter的监听超出默认限制。这个情况出现的原因是有不停的为同一个Event添加监听的情况。
你看看有没有执行的过程中会导致这个情况出现的?这个应该是由于某个逻辑出错后尝试重新加载的逻辑里有添加事件监听导致的

@whtiehack
Copy link
Member

示例项目 已经对 log4js.json的配置做了修复,因为 Log4js的新版本 配置方法不一样。

whtiehack added a commit that referenced this issue Dec 6, 2019
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

3 participants