web-dev-qa-db-ja.com

すべてのPHPエラー、警告、通知をerror_logに書き込みます

DrupalはPHP警告と通知をdblogまたはsyslog経由で記録するよう通知します。その結果、PHPエラーを監視する場所が2つあります(ウォッチドッグUI多数の通知に対応するのにはあまり適していません)。

この動作を防ぎ、すべてのphpエラーをphp設定で定義されたerror_logに記録することは可能ですか?

3
cjoy

そのためには、error_log()関数を呼び出す hook_watchdog を実装する必要があります。

例として、が実装されている場所の1つ、つまり syslog_watchdog を使用できます。 openlog()およびsyslog()関数を使用する代わりに、error_log()を使用します。

3
gerzenstl

@gerzenstlが提供するソリューションの基本的なコード例

/**
 * Implements hook_watchdog()
 */
function MYMODULE_watchdog(array $log_entry) {

  if($log_entry['type'] == 'php') {

    $output = format_string($log_entry['message'], $log_entry['variables']);
    $output =  strip_tags($output);
    error_log($output);

  }

}
1
cjoy

同じことをググるときにここに行きました。私はDockerを使用しているので、ウォッチドッグをウェブサーバーのロギングに移動させたいです。 @gerzenstlリンクを確認した後、誰かがすでにそれをコーディングしているかどうかをもう一度調べて、最終的にモジュールを見つけました: https://www.drupal.org/project/logging_alerts

'errorlog'サブモジュールはまさにこれを行います。全体として、すべてのモジュールは非常に完全であり、他の便利な機能を提供します。コーディングせずにこれを解決しました!

0
amontero