web-dev-qa-db-ja.com

Pm2ログファイルの場所の変更

Pm2に関する質問がいくつかあります

  • サーバーのcドライブアクセスの制限により、server-error-0.logおよびserver-out-0.logファイルの場所をc:\users\user\.pm2\logsから他のドライブに変更するにはどうすればよいですか。
  • ログファイルではなくデータベースにエラーと情報を記録できますか?そのために別のモジュールを作成する必要がありますか、またはこれを達成する方法はありますか?
8
Jeet

...ログファイルの場所を変更するにはどうすればよいですか?

Pm2のログファイルの場所を変更するには、2つの解決策があります。pm2コマンドの実行時にパラメーターとしてログパスを定義する(-l-o-e)、または構成ファイルからpm2を起動します。

パラメーターの解決策の例を次に示します。

pm2 start app.js -o ./out.log -e ./err.log

Pm2が実行されるたびにログパスを定義したくない場合は、構成ファイルを生成し、error_fileおよびout_fileを定義し、そこからpm2を開始できます。

  1. 構成ファイルを生成します:pm2 ecosystem simple。これにより、次の内容のファイルecosystem.config.jsが生成されます。

    module.exports = {
      apps : [{
        name   : "app1",
        script : "./app.js"
      }]
    }
    
  2. 次のように、ファイルにerror_file(エラーログ用)およびout_file(情報ログ用)を定義します。

    module.exports = {
      apps : [{
        name   : "app1",
        script : "./app.js",
        error_file : "./err.log",
        out_file : "./out.log"
      }]
    }
    
  3. Pm2の既存のプロセスを削除します。

    pm2 delete <pid>
    

    次のようにしてpidを取得できます。

    pm2 status
    
  4. 構成ファイルからプロセスを開始します。

    pm2 start ecosystem.config.js
    

このようにして、ログは./err.logおよび./out.logに保存されます。

詳細については、 document を参照してください。

ログファイルの代わりにデータベースにエラーと情報を記録できますか?

公式文書にはリソースが見つかりませんでした。自分でコードを書き、データベースにログを保存する必要があるようです。

16
shaochuancs

@shaochuancsの回答に追加したかったのは、ステップ3を実行する前に、古いプロセスを必ず削除することです。古いプロセスを削除しない場合、プロセスファイルに加えた変更は、アプリの起動後に有効になりません。

上記の手順3を実行する前に、このコマンドを発行する必要があります。

pm2 delete <pid>
13
user8042173

エラーログとコンソールログの両方を同じファイルに書き込みたい場合は、OneFileにログインしてELKにプッシュすることに興味があるなど、ユースケースになるかもしれません。-l

-l --log [path]              specify filepath to output both out and error logs

以下に例を示します

pm2 start server.js -l /app/logs/server.log

変更を行った後、回答に記載されているようにこのコマンドを実行することを忘れないでください。

pm2 delete <pid>
0
Adiii

変更されたログパスで起動時にpm2が必要な場合:

  1. pm2すべて削除
  2. pm2 ecosystem.jsを開始します
  3. pm2保存
  4. pm2スタートアップ
0
Ivan Vovk