質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

3370閲覧

ログにタイムスタンプを付与したい

退会済みユーザー

退会済みユーザー

総合スコア0

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2019/07/18 17:37

編集2019/10/03 09:12

初心者のため、言葉の不備等ございましたらご指摘頂けると幸いです。

(1) nodeサーバの起動ログと、server.jsの中で動いているnode.jsプログラムのログ(log4jsで定義)の出力先が別ファイルに分かれていることは普通なのか。
*nodeサーバの起動ログとは、以下コマンド実行した時の標準出力、標準エラー出力、errを示しています。おそらくconsole.logで指定しているもの+スタックトレースのログです。

node server.js

(2)nodeサーバの起動ログにタイムスタンプを付与する方法を知りたい。
現在はnodeサーバの起動ログにタイムスタンプを付与したい場合にはsystemdでのexecStartコマンドにstdbuf等を使用しているが、errの場合(標準出力でも標準エラー出力でもない)にタイムスタンプが付与されない。

(3)このような構成の場合、どこでデーモン化(永続化)をするのがベストか。

  • shellでのnohup
  • systemd
  • nodeでのforever

以上です。

全体的にもう少しプロセスの起動方法をシンプルにしたいのですがどこをどうまとめて良いのかがわからない為、一旦上記のものにまとめました。
その他にもアドバイスございましたらコメント頂けると有り難いです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自分の場合はforeverとpm2比較してpm2選んだのでpm2の場合しか分かりませんが、起動ログはでます。
https://qiita.com/ikemura23/items/b3481393d4edca2d5188

pm2でserver.jsを起動するときは直接起動するのではなく以下のサイトのようにconfigにまとめて起動します
https://qiita.com/poruruba/items/10df0d94e9127797498f
自分が参考にしたサイトではないですが、大体こんな感じの書き方してました、多分英語でも日本語でもどこのサイト見ても似たようなもんだと思うので、検索して一番最初に引っかかったものでも見ればいいかなと。

shellでのnohup

nodeに最適されたforerverがpm2があるのであえて使う必要は無いと思いますが、

systemd

サーバーリブート時に備えてpm2を実行するための起動スクリプトを用意しておくのはいいかもしれません。

nodeサーバの起動ログと、server.jsの中で動いているnode.jsプログラムのログ(log4jsで定義)の出力先が別ファイルに分かれていることは普通なのか。

普通だと思います。

投稿2019/07/18 20:42

編集2019/07/18 20:45
hentaiman

総合スコア6389

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/19 00:44

ご回答ありがとうございます。 pm2のconfig内でログフォーマットの設定もできるようなので実施してみます。 2点追加でお伺いしたいです。 <前提> 以下二つのログ出力について ① nodeサーバの起動ログ ② server.jsの中で動いているnode.jsプログラムのログ(log4jsで定義) server.js内でapp.jsというメインのプログラムファイルを読み込む構成になっています。 現在server.jsやapp.js内でconsole.logとして定義されたものは全て①に出力され、log4jsで定義したものは②へ出力されている認識です。 <本題> 現在、以下と同様のエラーが発生しており発生の原因となったAPIリクエスト等を知る為タイムスタンプを付与したいと考えています。 https://codeday.me/jp/qa/20181212/50754.html - このエラーは恐らくメインプログラムであるapp.jsの処理内で起きたエラーと思うのですが、これが現在①の方に出力されています。これは何故でしょうか? - また出力されているログにはスタックトレースの記載がなく、エラーメッセージのみが記載されています。この場合はどこでスタックトレースの設定をしたら良いのでしょうか。 どうしたらログの解析を行えるのかわからず、何かアドバイスいただけると幸いです。
hentaiman

2019/07/20 00:52 編集

server.js内ののapp.jsを読み込むところで ---------------------- try{ app.jsの処理 }catch(e){ console.log(e);//とかlog4jsとか } ---------------------- とすればスタックトレース出ますよ nodejsと言っても結局ただのjavascriptという事を念頭に置いて使ってみたら意外と問題解決できるんじゃないでしょうか? 回答しといてなんですが、自分も試しに簡単な業務システム構築に用いて数日触った程度なので、簡単なシステム構築する程度の知識しかないです。なのであまりマニアックな質問になってくると答えられない可能性が????
退会済みユーザー

退会済みユーザー

2019/07/20 00:50

一旦スタックトレース出して様子を見てみます。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問