最終更新: a few seconds agoRemove Netlify-related code from main (grafted, HEAD)

Logger

ログ概論

CIRCUS の関係のログは以下のように記録する。いずれも cscore.config.js で出力先を制御できる。

  • circus-libLogger(後述)経由で記録するログ

    • config.csCoreDaemonLogger: CS Core Plug-in Job Manager が記録する
    • config.apiLogger: circus-api のインスタンスが記録する(未実装)
    csCoreDaemonLogger: {
      type: 'FileLogger',
      options: { fileName: "/var/circus/logs/cscore-daemon" } // 拡張子は不要
    }
    
  • CS のプラグインが出力するログ

    • config.jobReporter.options.pluinResultDir の内部にジョブ番号ごとのディレクトリに保存される。こちらはプラグインコンテナからの標準出力がパイプされてそのまま記録されるもの。
  • pm2 が記録するログ

    • config.jobManager.startOptions: ジョブマネージャの標準出力/標準エラー出力を pm2 が記録するもの。上記の csCoreDaemonLoggerStdoutLogger でない限り、ここには最小限の記録しか入らないようにする。
    jobManager: {
      options: {
        startOptions: {
          output: '/var/circus/logs/daemon-pm2-output.log',
          error: '/var/circus/logs/daemon-pm2-error.log'
        },
        checkQueueInterval: 1000
      }
    }
    

Logger について

@circus-lib/src/logger 内に、Logger インターフェースを実装する以下の 3 種類のロガーがあるので、これを ServiceLoader 経由で作成して使う。Logger 自体は info, error, fatal などのメソッドを実装しているシンプルなもの。

  • NullLogger: ログを出力せずに捨てる
  • FileLogger: 日付つきのファイルにログを出力する
  • StdoutLogger: 標準出力(オプションで標準エラー出力)にログを出力する

FileLogger / StdoutLogger は内部で winston というロガーライブラリに依存している。

それ以外のログ出力方法(クラウドのログサービスへの接続など)が将来的に欲しくなった場合は適宜 Logger を implement したものを作る。

log4js は使いづらいので廃止