5

Expressプロジェクトがあり、ファイルにログを記録するように設定しています。

logPath = '/mnt/log/api.log'
logfile = fs.createWriteStream logPath, {flags: 'a'} 

loggingOptions = 
  format: 'default'
  stream: logfile

app.use express.logger(loggingOptions)

これはリクエストのログ記録には機能しますが、自分のメッセージをログに追加したいのですが、その方法がわかりません。console.logリダイレクトされておらず、書き込み可能な「ロガー」オブジェクトが作成されていないようです。

それで、ファイルストリームへの参照を渡し、それに書き込む唯一のオプションはありますか?

4

3 に答える 3

0

あなたが求めていることを正確に行う方法はわかりませんが、これは私がしていることであり、これまでのところうまくいきました.

以下に示すように、エクスプレスロガー(実際には、ドキュメントを探している場合は接続ロガーです)を構成すると、すべてのログ出力が標準出力に送られます。console.log("blah blah") で同じ出力に出力できます。

app.use(express.logger("default"));

本番サーバーでは、ノードのすべての出力をログ ファイルにリダイレクトします。

これは、シェル ウィンドウでノードを実行し、すべて同じ出力を表示できるため、開発中にもうまく機能します。(実際、私は開発中に express.logger("dev") を使用します。これは、開発作業の出力がよりクリーンになるためです。)

于 2013-01-02T01:25:04.570 に答える
0

他のミドルウェアと同様にエラー処理ミドルウェアを定義しますが、引数が 3 つではなく 4 つあり、具体的には署名 (err、req、res、next)) があります。

    app.use(function(err, req, res, next){
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

http://expressjs.com/guide/error-handling.html

于 2015-02-25T12:23:07.513 に答える