[NodeJS] 警告の発生場所が特定できない場合は、trace-warnings で実行しよう

TypeScript で TCP サーバーを構築していたのですが、MaxListenersExceededWarning のワーニングが 発生しており、原因が分からずにいました。

(node:1396) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGHUP listeners added. Use emitter.setMaxListeners() to increase limit

発生場所を特定する方法の1つに、--trace-warning オプションをつけて実行する方法があります。

    d:\work\@node\tcpserver>node --trace-warnings build\PastDataDelete.js
    (node:13644) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGHUP listeners added. Use emitter.setMaxListeners() to increase limit
        at _addListener (events.js:243:17)
        at process.addListener (events.js:259:10)
        at fileAppender (d:\work\@node\tcpserver\node_modules\log4js\lib\appenders\file.js:77:11)
        at Object.configure (d:\work\@node\tcpserver\node_modules\log4js\lib\appenders\file.js:88:10)
        at clustering.onlyOnMaster (d:\work\@node\tcpserver\node_modules\log4js\lib\appenders\index.js:59:27)
        at Object.onlyOnMaster (d:\work\@node\tcpserver\node_modules\log4js\lib\clustering.js:74:50)
        at createAppender (d:\work\@node\tcpserver\node_modules\log4js\lib\appenders\index.js:57:21)
        at Object.keys.forEach (d:\work\@node\tcpserver\node_modules\log4js\lib\appenders\index.js:73:25)
        at Array.forEach (<anonymous>)
        at setup (d:\work\@node\tcpserver\node_modules\log4js\lib\appenders\index.js:71:33)

これをみると、log4js まわりで発生しているように見えます。

私の場合の原因

私の場合は、log4js でのログファイル定義を、ログ出力の都度行っていたことが原因でした。

    const log4js = require('log4js');
    log4js.configure({
    appenders : {
        app : {type : 'file', filename : "./log/app.log"}
    },
    categories : {
        default : {appenders : ['app'], level: 'debug'},
    }
    });
    const logger = log4js.getLogger('app');

これを外に出して、問題解決でした。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

実践TypeScript【電子書籍】[ 吉井健文 ]
価格:3726円 (2019/7/23時点)

[

楽天で購入

](https://hb.afl.rakuten.co.jp/hgc/18648e8b.7d833591.18648e8c.ed1bab3c/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Frakutenkobo-ebooks%2F5456816fd8833397a6aa8b80647873ad%2F%3Fscid%3Daf_pc_bbtn&m=http%3A%2F%2Fm.rakuten.co.jp%2Frakutenkobo-ebooks%2Fi%2F18341447%2F%3Fscid%3Daf_pc_bbtn&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjEsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxfQ==)

コメントを残す

メールアドレスが公開されることはありません。