2016-07-24 24 views

答えて

1

もっと簡単な方法がconsole.logをフックし、など通常console.logを呼んで動作するはずです。

var util = require('util'); 
var JFile = require("jfile"); 
var nxFile = new JFile('/var/log/nginx/access.log'); 
... 
process.stdout.write = (function(write) { 
    return function(text, encoding, fd) { 
     write.apply(process.stdout, arguments); // write to console 
     nxFile.text += util.format.apply(process.stdout, arguments) + '\n'; // write to nginx 
    } 
})(process.stdout.write); 

また、あなたは上記のコードでstrerrに変更stdoutによってconsole.errorにフックを定義することができます。

P.S.私はコードを確認するためにnginxを持っていません。コードにはエラーが含まれる可能性があります:)

1

ブリーフ:

JFileパッケージを使用して、ファイルのログには、次のように滑らかになります

nxFile.text+='\n'+message; 

詳細:

を使用し、その後、両方(ターミナル+ nginxのログ)にログインする機能を追加します。直接console.logを使用する代わりに、

var customLog=function(message){ 

    console.log(message); 
    logNginx(message); 
} 

その後、のCustomLog内部で呼び出されlogNginxを実装:

var JFile=require('jfile'); // "npm install jfile --save" required 
    let nxFile=new JFile('/var/log/nginx/access.log'); // check path before if exist in your system . IF no , change it with the available path 
    function logNginx(message){ 
     nxFile.text+='\n'+message; //append new line in nginx log file 
     } 

は迅速に行うのファイルを扱うになりJFileのnpm install jfileをインストールすることを忘れないでください。

0

nginxスクリプトに次のコードを追加できます。これは

env NODE_BIN=/usr/bin/node 
env SCRIPT_FILE="server.js" 
env LOG_FILE=/var/log/logfilename.log 
env RUN_AS="root" 


$RUN_AS -- $NODE_BIN $SCRIPT_FILE >> $LOG_FILE 2>&1 
関連する問題