Node.jsアプリがsystemdで設定されています。アプリはNGINXの背後にあります。
Node.jsアプリケーションのコンソール出力をログアクセスNGINXファイルに追加しますか?
どうすればいいですか?ログ出力NGINXファイルにコンソール出力Node.jsアプリを追加する方法は?
ありがとうございます。
Node.jsアプリがsystemdで設定されています。アプリはNGINXの背後にあります。
Node.jsアプリケーションのコンソール出力をログアクセスNGINXファイルに追加しますか?
どうすればいいですか?ログ出力NGINXファイルにコンソール出力Node.jsアプリを追加する方法は?
ありがとうございます。
もっと簡単な方法が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を持っていません。コードにはエラーが含まれる可能性があります:)
が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
をインストールすることを忘れないでください。
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