phpプログラムで生成される独自のエラーメッセージ(例:無効なユーザー日付エントリによるエラー)を記録する方法to drupal error log.
watchdog
function を使用できます。
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
マニュアルを引用すると、パラメーターは次のとおりです。
$type
このメッセージが属するカテゴリ。$message
ログに保存するメッセージ。$variables
ディスプレイ上のメッセージで置換する変数の配列、またはメッセージが既に翻訳されているか翻訳できない場合はNULL。$severity
RFC 3164によるメッセージの重大度$link
メッセージに関連付けるリンク。また、エラーレベルは watchdog_severity_levels
のページで確認できます。エラーの場合は、エラーの種類に応じて、おそらくWATCHDOG_ERROR
を使用するか、より重要なものを使用します。
Drupal 8
// Logs a notice
\Drupal::logger('my_module')->notice($message);
// Logs an error
\Drupal::logger('my_module')->error($message);
Drupal 8 でメッセージをログに記録する方法)で例を参照してください。
1)実際、ウォッチドッグは、自身のPHPエラーを記録する標準的な方法です。
2)または、Drupal=ページのデバッグ中にエラーメッセージをすぐに表示する必要がある場合は、FireBugコンソールの関連ページでログに記録/印刷することをお勧めします。ページ関連のジャストインタイムログを表示できる場合に便利です-これには、- 開発 モジュール、 Firebug FireFoxの拡張機能、および Firephp が必要です。
Dfb()関数を使用して、ログメッセージを一般的なFirebugコンソールに直接書き込むことができます。
dfb($input, $label = NULL)
Drupal関連のログメッセージを通常のFirebugコンソールから除外したい場合は、firep()関数を使用して Drupal for Firebug ログにメッセージを書き込むことができます。
firep($item, $optional_title)
ウォッチドッグは間違いなく本番システムに行く方法ですが、デバッグ中にdrupal_set_message
関数は便利です。
「Operation Successful」タイプのメッセージが通常表示される画面にメッセージを出力します(したがって、サイトをライブにする前に必ず削除してください)。
drupal 7では、次の方法でメッセージを記録できます。
データベースにメッセージを記録するために使用できるdrupalウォッチドッグ機能、/ admin/build/modulesでデータベースロギングのオプションのコアモジュールが有効になっていることを確認します。
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
$ type:このメッセージが属するカテゴリ、例:PHP、cron ..、タイプ別にメッセージをフィルタリングできます。
$ message:ログに保存するメッセージ、例: '次のモジュールがファイルシステムにありません:security_review'
$ variables:ディスプレイ上のメッセージで置換する変数の配列、またはメッセージがすでに翻訳されているか翻訳できない場合はNULL。メッセージを翻訳するには、動的な値を渡さないでください。メッセージ内の変数は、プレースホルダー文字列を使用して追加する必要があります。
例:watchdog( 'cg_volunteer'、 'cg in form_alter%formly'、array( '%formly' => $ form ['#id'] )、WATCHDOG_NOTICE、$ link = NULL);
$ severityメッセージの重大度、ログはRFC 3164に従って重大度でフィルタリングできます。可能な値はWATCHDOG_ERROR、WATCHDOG_WARNINGなどです。 https://api.drupal.org/api/drupal/includes!bootstrap.inc/function/watchdog/7.x
$ link:メッセージに関連付けるリンク。
例
//ログ通知用
watchdog('my_module', $message, array());
//ログエラーの場合
watchdog('my_module', $message, array(), WATCHDOG_ERROR);
drupal 8では、次の方法を使用しました:
//ログの通知。
\Drupal::logger('my_module')->notice($message);
//ログの場合はエラー。
\Drupal::logger('my_module')->error($message);
//アラートの場合、すぐに対処する必要があります。
\Drupal::logger('my_module')->alert($message);
//クリティカルメッセージ用。
\Drupal::logger('my_module')->critical($message);
//デバッグレベルのメッセージ用。
\Drupal::logger('my_module')->debug($message);
//緊急の場合、システムは使用できません。
\Drupal::logger('my_module')->emergency($message);
//警告用
\Drupal::logger('my_module')->warning($message);
//情報メッセージ用。
\Drupal::logger('my_module')->info($message);
また、変換のためにt()関数を使用しないでください。
\Drupal::logger('my_module')->alert('Message from @module: @message.', [
'@module' => $module,
'@message' => $message,
]);
これは実行時に翻訳されます。
例:
\Drupal::logger('content_entity_example')->notice('@type: deleted %title.',
array(
'@type' => $this->entity->bundle(),
'%title' => $this->entity->label(),
));
// Get logger factory.
$logger = \Drupal::service('logger.factory');
// Log a message with dynamic variables.
$nodeType = 'Article';
$userName = 'Admin';
$logger->get($moduleName)->notice('A new "@nodeType" created by %userName.', [
'@nodeType' => $nodeType,
'%userName' => $userName,
]);