phpプログラムで生成された独自のエラーメッセージ(例:無効なユーザー日付エントリによるエラー)をdrupalエラーログに記録する方法。
7 に答える
あなたはwatchdog
関数を使うことができます:
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
マニュアルを引用すると、パラメータは次のとおりです。
$type
このメッセージが属するカテゴリ。$message
ログに保存するメッセージ。$variables
表示されているメッセージで置き換える変数の配列。メッセージがすでに翻訳されているか、翻訳できない場合はNULL。$severity
RFC3164によるメッセージの重大度$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);
Drupal8でメッセージをログに記録する方法のその他の例を参照してください。
1)確かに、ウォッチドッグは独自のPHPエラーを記録するための標準的な方法です。
2)または、Drupalページのデバッグ中にエラーメッセージをすぐに表示する必要がある場合は、FireBugコンソールの関連ページでエラーメッセージをログに記録/印刷することをお勧めします。ページ関連のジャストインタイムログを表示できる場合、これは非常に便利な場合があります。これには、 -Develモジュール、 FireFoxへのFirebug拡張機能、場合によってはFirephpが必要です。
dfb()関数を使用して、ログメッセージを一般的なFirebugコンソールに直接書き込むことができます。
dfb($input, $label = NULL)
Drupal関連のログメッセージを通常のFirebugコンソールから除外したい場合は、firep()関数を使用してDrupalforFirebugログにメッセージを書き込むことができます。
firep($item, $optional_title)
ウォッチドッグは間違いなく本番システムに行く方法ですが、デバッグ中にこのdrupal_set_message
関数が役立つことがわかりました。
「操作成功」タイプのメッセージが通常表示される画面にメッセージを出力します(したがって、サイトをライブにする前に必ずメッセージを削除してください)。
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);
$ silverity メッセージの重大度、ログは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(),
));
watchdog
D7と\Drupal::logger
D8の両方でwatchdog
、(データベースに)ログインテーブルが書き込まれ、大量のデータがログに記録されると、パフォーマンスへの影響を想像できます。
error_log
php関数を使用してそれを行うことができます( PHPマニュアルを参照)。
error_log("Your message", 3, "/path/to/your/log/file.log");
ログファイルに書き込む権限が必要です(
/path/to/your/log/file.log
)
// 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,
]);