38

phpプログラムで生成された独自のエラーメッセージ(例:無効なユーザー日付エントリによるエラー)をdrupalエラーログに記録する方法。

4

7 に答える 7

50

あなたはwatchdog関数を使うことができます:

watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)

マニュアルを引用すると、パラメータは次のとおりです。

  • $typeこのメッセージが属するカテゴリ。
  • $messageログに保存するメッセージ。
  • $variables表示されているメッセージで置き換える変数の配列。メッセージがすでに翻訳されているか、翻訳できない場合はNULL。
  • $severityRFC3164によるメッセージの重大度
  • $linkメッセージに関連付けるリンク。

また、エラーレベルはのページで確認できますwatchdog_severity_levels。エラーの場合は、エラーWATCHDOG_ERRORの種類に応じて、おそらく、またはさらに「重大な」ものを使用します。

于 2009-11-10T05:45:15.187 に答える
10

Drupal 8

// Logs a notice
\Drupal::logger('my_module')->notice($message);
// Logs an error
\Drupal::logger('my_module')->error($message);

Drupal8でメッセージをログに記録する方法のその他の例を参照してください。

于 2016-03-21T17:02:45.463 に答える
6

1)確かに、ウォッチドッグは独自のPHPエラーを記録するための標準的な方法です。

2)または、Drupalページのデバッグ中にエラーメッセージをすぐに表示する必要がある場合は、FireBugコンソールの関連ページでエラーメッセージをログに記録/印刷することをお勧めします。ページ関連のジャストインタイムログを表示できる場合、これは非常に便利な場合があります。これには、 -Develモジュール、 FireFoxへのFirebug拡張機能、場合によってはFirephpが必要です。

dfb()関数を使用して、ログメッセージを一般的なFirebugコンソールに直接書き込むことができます。

dfb($input, $label = NULL)

Drupal関連のログメッセージを通常のFirebugコンソールから除外したい場合は、firep()関数を使用してDrupalforFirebugログにメッセージを書き込むことができます

firep($item, $optional_title)
于 2009-11-10T08:14:18.703 に答える
5

ウォッチドッグは間違いなく本番システムに行く方法ですが、デバッグ中にこのdrupal_set_message関数が役立つことがわかりました。

「操作成功」タイプのメッセージが通常表示される画面にメッセージを出力します(したがって、サイトをライブにする前に必ずメッセージを削除してください)。

http://api.drupal.org/api/function/drupal_set_message/6

于 2009-11-10T08:54:17.403 に答える
2

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(),
));
于 2018-04-05T10:45:36.700 に答える
2

watchdogD7と\Drupal::loggerD8の両方でwatchdog、(データベースに)ログインテーブルが書き込まれ、大量のデータがログに記録されると、パフォーマンスへの影響を想像できます。

error_logphp関数を使用してそれを行うことができます( PHPマニュアルを参照)。

error_log("Your message", 3, "/path/to/your/log/file.log");

ログファイルに書き込む権限が必要です(/path/to/your/log/file.log

于 2018-07-19T10:45:33.433 に答える
1
// 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,
]);

ソース

于 2018-10-03T09:59:29.080 に答える