web-dev-qa-db-ja.com

エラーメッセージをdrupalに記録する方法

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

34
ArK

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を使用するか、より重要なものを使用します。

46
Pascal MARTIN

Drupal 8

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

Drupal 8 でメッセージをログに記録する方法)で例を参照してください。

7
milkovsky

1)実際、ウォッチドッグは、自身のPHPエラーを記録する標準的な方法です。

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

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

dfb($input, $label = NULL)

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

firep($item, $optional_title)
6
AlexA

ウォッチドッグは間違いなく本番システムに行く方法ですが、デバッグ中にdrupal_set_message関数は便利です。

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

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

3
DilbertDave

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(),
));
2
SynapseIndia

D7のwatchdogとD8の\Drupal::loggerの両方は、watchdogテーブル(データベース内)にログを書き込み、 HUGE data logs 、パフォーマンスへの影響を想像できます。

error_log php関数を使用して実行できます( PHPマニュアル を参照)。

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

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

drupal-8drupalphplog

1
kaay
// 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,
]);

ソース

0
Santo Boldižar