2

すべての情報を 1 つのファイルだけに記録したい。私は pm2 "0.12.1" と "winston": "0.8.3" を使用しています。

ここにウィンストンの私のコードがあります

var winston = require('winston');

var customLoggerLevels = {
  levels: {
    trace: 0,
    debug: 1,
    info: 2,
    warn: 3,
    error: 4
  },
  colors: {
    trace: 'blue',
    debug: 'green',
    info: 'grey',
    warn: 'yellow',
    error: 'red'
  }
};

var logger = new (winston.Logger)({
  levels: customLoggerLevels.levels
});

そして私の ecosystem.json の一部

 "apps" : [
    {
      "name"      : "myapp",
      "script"    : "server.js",
      "instances"  : "1",
      "err_file"    : "myapp.log",
      "out_file"    : "myapp.log",
      "env": {
        "NODE_ENV": "development",
        "PORT": 4000
      },
      "env_production" : {
        "NODE_ENV": "production",
        "PORT": 4000
      }
    }
  ]

これは私にとってはうまくいきません。pm2 が出力用とエラー用の 2 つのファイルを作成する理由がわかりません。また、ファイルを本番環境の別のディレクトリに配置できるかどうかも知りたいです。

ありがとうございました

4

1 に答える 1

6

out_fileおよびerror_fileキーでファイル パスを指定できます。デフォルトでは、pm2 はstdout出力を出力とは別のファイルにリダイレクトしstderrます。ログ ファイルが 1 つだけ必要な場合は、両方の出力に同じパスを使用します。

あなたecosystem.jsonは次のようになります:

"apps" : [
    {
      "name"      : "myapp",
      "script"    : "server.js",
      "instances"  : "1",
      "error_file"    : "/var/log/myapp.log",
      "out_file"    : "/var/log/myapp.log",
      "env": {
        "NODE_ENV": "development",
        "PORT": 4000
      },
      "env_production" : {
        "NODE_ENV": "production",
        "PORT": 4000
      }
    }
  ]

すべてのインスタンスのログをマージするオプションもあります(マージアウト/エラーではありません)。を指定して使用しますmerge_logs: true。また、ログ ファイル名の pm2 ID を取り除くこともできます。

于 2014-11-22T13:42:35.143 に答える