2017-02-02 10 views
3

Morganは、要求を直接コンソールに出力します。Nodejs - デバッグでmorganを使用する方法

npm debugにそれらをリダイレクトすると、ログに記録されている他のものと同じ形式になります。

マイdebug.js設定は以下のようになります。

import debug from 'debug'; 

const LOG_PREFIX = 'api'; 

const info = debug(`${LOG_PREFIX}:info`); 
const dev = debug(`${LOG_PREFIX}:dev`); 
const error = debug(`${LOG_PREFIX}:error`); 

export { 
    info, 
    dev, 
    error, 
}; 

など、私は現在、他のものをログ:私の現在のモルガン・コールがある

import { info } from './debug'; 

info('App is up and running!'); 

app.use(morgan('combined')); 
+0

良いです。これは、ファイル、コンソール、newtork、dbのようなさまざまなトランスポートに多くのことを記録できます。モルガンができないことがたくさんある。高度に設定可能。私はMongoDBに簡単にログインすることができなかったので私はmorgonを交換しました –

答えて

2

モルガンが受け入れオプションのパラメータはstreamです。

デフォルトでは、コンソールはprocess.stdoutです。

stream.writeを呼び出すと、簡単にdebugにリダイレクトする簡単なストリームを作成できます。

app.use(morgan('combined', { stream: { write: msg => info(msg) } })); 

総称的に(まだES6)、次のようになります

import debug from 'debug'; 
const info = debug('info'); 
app.use(morgan('combined', { stream: { write: msg => info(msg) } })); 

ES5:エクスプレス・ウィンストンを使用する

var info = require('debug')('info'); 
app.use(morgan('combined', { stream: { write: function(msg) { info(msg); } }})); 
+0

MongoDBに移動したいのですが? –

+0

@NidhinDavid私は非常に効率的な方法であなたのために既にそれを行うライブラリがあると確信していますが、簡単に 'info(msg)'を 'db.collection( 'logs')のように変更するだけです.insertOne({msg、date}) ' – zurfyx

+0

MongoDbはストリームの書き込みをサポートしていると思いますか? –