簡體   English   中英

記錄節點的stdout和stderr

[英]Logging stdout and stderr of Node

我正在使用mean.io的樣板代碼並使用以下命令啟動我的服務器:

node server.js

如何記錄Express應用程序的stdoutstderr

這是我的文件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;

那這個呢?

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.stdoutprocess.stderr都是流,因此您甚至可以將流傳輸到它們中。 有關詳細信息,請參閱流上的Node.js文檔

您可以通過寫入stdout和stderr流來完成此操作

process.stdout.write('Hello')

要么

process.stderr.write('Error')

更好的方法是使用像winstonbunyan這樣的第三方記錄模塊

我能想到的唯一方法就是生成一個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]
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM