DrupalはPHP警告と通知をdblogまたはsyslog経由で記録するよう通知します。その結果、PHPエラーを監視する場所が2つあります(ウォッチドッグUI多数の通知に対応するのにはあまり適していません)。
この動作を防ぎ、すべてのphpエラーをphp設定で定義されたerror_logに記録することは可能ですか?
そのためには、error_log()関数を呼び出す hook_watchdog を実装する必要があります。
例として、が実装されている場所の1つ、つまり syslog_watchdog を使用できます。 openlog()およびsyslog()関数を使用する代わりに、error_log()を使用します。
@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);
}
}
同じことをググるときにここに行きました。私はDockerを使用しているので、ウォッチドッグをウェブサーバーのロギングに移動させたいです。 @gerzenstlリンクを確認した後、誰かがすでにそれをコーディングしているかどうかをもう一度調べて、最終的にモジュールを見つけました: https://www.drupal.org/project/logging_alerts
'errorlog'サブモジュールはまさにこれを行います。全体として、すべてのモジュールは非常に完全であり、他の便利な機能を提供します。コーディングせずにこれを解決しました!