他のすべてのメッセージはそのままにして、「Cron run completed」をログに書き込むようにwatchdog notに指示したいと思います。これどうやってするの?
ありがとう!
これには特別なフックはありません。 Drupal 8)でこれを修正する最も簡単な方法は、logger.dblogサービスをオーバーライドすることです。
公式ドキュメント によると、ServiceProviderBaseおよびalter()メソッドを以下に示します。
<?php
namespace Drupal\example;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceProviderBase;
/**
* Modifies the logger.dblog service.
*/
class ExampleServiceProvider extends ServiceProviderBase {
/**
* {@inheritdoc}
*/
public function alter(ContainerBuilder $container) {
// Overrides logger.dblog service to exclude some unwanted log messages.
$container->getDefinition('logger.dblog')
->setClass('Drupal\example\Logger\DbLog');
}
}
ロガー自体は非常に単純です。
<?php
namespace Drupal\example\Logger;
use Drupal\dblog\Logger\DbLog as BaseDbLog;
/**
* Logs events in the watchdog database table.
*/
class DbLog extends BaseDbLog {
/**
* {@inheritdoc}
*/
public function log($level, $message, array $context = array()) {
if ($message != t('Cron run completed.')) {
parent::log($level, $message, $context);
}
}
}
drupal 7の場合、カスタムモジュールにhook_watchdog()
を実装してエラーメッセージを表示できますが、データベースにログインしているメッセージを変更することはできません。_hook_watchdog
_ ここ
特定のメッセージを削除するには、おそらく、 こちらのようにウォッチドッグが過剰なメッセージから自分自身をクリーンアップするときに行うウォッチドッグのようなものを使用して、独自のモジュールに_hook_cron
_を実装できます しかし、削除する特定のメッセージのみを見つけるようにコードを調整する必要があります。
おそらく、あなたが言及したものを除くすべてのログメッセージを表示するには、 https://www.drupal.org/project/views_watchdog を使用して作成できますdblogメッセージのビューであり、おそらくビューフィルタリングを使用してそれらを除外できます。
または https://www.drupal.org/project/watchdog_filtering がフィルタリングを実行できる可能性があります
特定のログメッセージをしない書き込もうとする代わりに、 Views Watchdog モジュールを使用することもできます(そのようなメッセージを含めないようにするため)ログメッセージのリストを作成するとき)。
このモジュールの詳細(プロジェクトページから):
... Views モジュールを拡張し、ウォッチドッグエントリのカスタマイズされたリスト(ページ、ブロック、フィード)を作成できるようにします。
特徴
このモジュールは、カスタムページ、ブロック、およびフィードを作成するためのいくつかのフィールド、フィルターおよびソート基準を提供します。
また、ウォッチドッグエントリをテーブル内の強調表示された行として表示するスタイルウォッチドッグテーブルも提供します。