web-dev-qa-db-ja.com

Nodeのstdoutおよびstderrのロギング

私は mean.io の定型コードを使用し、次のコマンドでサーバーを起動しています:

node server.js

Expressアプリケーションのstdoutおよびstderrをログに記録するにはどうすればよいですか?

これが私のファイルですserver.js

'use strict';

/**
 * Module dependencies.
 */
var mongoose = require('mongoose'),
    passport = require('passport'),
    logger = require('mean-logger');

/**
 * Main application entry file.
 * Please note that the order of loading is important.
 */

// Initializing system variables
var config = require('./server/config/config');
var db = mongoose.connect(config.db);

// Bootstrap Models, Dependencies, Routes and the app as an express app
var app = require('./server/config/system/bootstrap')(passport, db);

// Start the app by listening on <port>, optional hostname
app.listen(config.port, config.hostname);
console.log('Mean app started on port ' + config.port + ' (' + process.env.NODE_ENV + ')');

// Initializing logger
logger.init(app, passport, mongoose);

// Expose app
exports = module.exports = app;
24
raju

これはどうですか?

console.log("I will goto the STDOUT");
console.error("I will goto the STDERR");

注:これらの関数は両方とも入力に新しい行を自動的に追加します。

入力にこれらの改行を追加したくない場合は、これを行います

process.stdout.write("I will goto the STDOUT")
process.stderr.write("I will goto the STDERR")

どちらも process.stdoutおよびprocess.stderrはストリームであるため、ストリームをパイプで渡すこともできます。詳細については、 ストリームのNode.jsドキュメント を参照してください。

46
Steel Brain

これを行うには、stdoutおよびstderrストリームに書き込みます。

process.stdout.write('Hello')

または

process.stderr.write('Error')

winston または bunyan のようなサードパーティのロギングモジュールを使用する方が良いでしょう

9
ashu

これを行うために私が考えることができる唯一の方法は、child process(forkシステムコールと同様)、stderrstdoutの出力をファイルに「パイプ」できます。

var out = fs.openSync('./output.log', 'a')
  , err = fs.openSync('./error.log', 'a');

require('child_process').spawn('./server', [], {
    detached    : true,
    stdio       : ['ignore', out, err]
});
4
Ryan