0

私はしばらくの間、これに対する答えを探していましたが、解決策を思いつきませんでした. req.log.xxxxx(...) から組み込みロガーにアクセスできることは理解していますが、コントローラーに必要なモジュールについてはどうでしょうか? 例えば:

私のコントローラーファイルで、someController.js

var myModule = require('myModule');

SomeController.listUsers = function listUsers(req, res, next){
    req.log.info('Some log message'); // <---- this works just fine
    //... 
}

myModule.js で:

module.exports = {
    getUsers: function () {
        // ...
        // I would like to be able to log from here, but don't have access to the req object.
    }
}

ログオブジェクトをモジュールのメソッドに渡すという考えは、私にはだらしないように思えるので、あまり好きではありません。それが唯一の解決策なら、私はそれで生きます。

4

3 に答える 3

0

ここには多くのオプションはありません。通常、「req」オブジェクトを渡します。それを回避する別の方法は、「this」引数をコンテキストとして利用することです。このようなもの:

function listUsers(req, res, next) {
    req.log.info('Some log message');
    myModule.getUsers.call({log: req.log});
}

と...

module.exports = {
    getUsers: function () {
        (this.log || logger.log)() // ...
    }
}
于 2015-12-16T20:35:02.777 に答える