我正在使用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;
答案 0 :(得分:46)
这个怎么样?
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 docs on streams。
答案 1 :(得分:7)
您可以通过写入stdout和stderr流
来完成此操作process.stdout.write('Hello')
或
process.stderr.write('Error')
答案 2 :(得分:4)
我能想到的唯一方法是生成一个child process
(就像fork系统调用一样),然后你可以&#34; pipe&#34; stderr
,stdout
到文件的输出。
var out = fs.openSync('./output.log', 'a')
, err = fs.openSync('./error.log', 'a');
require('child_process').spawn('./server', [], {
detached : true,
stdio : ['ignore', out, err]
});