Skip to content
Snippets Groups Projects
Commit 645b29c8 authored by Arthur Baghdasaryan's avatar Arthur Baghdasaryan
Browse files

Issue #3473408 by arthur.baghdasar: Add logging

parent fdfd8184
Branches 9.1.x
Tags 9.1.1
1 merge request!7Issue #3473408 by arthur.baghdasar: Add logging
......@@ -6,8 +6,8 @@ use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Queue\QueueWorkerBase;
use Drupal\entity_usage\EntityUpdateManager;
use Psr\Log\LoggerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\RevisionableInterface;
use Drupal\Core\Database\Connection;
......@@ -22,6 +22,13 @@ use Drupal\Core\Database\Connection;
*/
class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPluginInterface {
/**
* The logger.
*
* @var \Psr\Log\LoggerInterface
*/
protected $logger;
/**
* The entity type manager service.
*
......@@ -65,12 +72,15 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
* Entity usage update manager.
* @param \Drupal\Core\Database\Connection $database_service
* The Drupal Database service.
* @param \Psr\Log\LoggerInterface $logger
* The logger.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityUpdateManager $entity_usage_update_manager, Connection $database_service) {
public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityUpdateManager $entity_usage_update_manager, Connection $database_service, LoggerInterface $logger) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->entityTypeManager = $entity_type_manager;
$this->entityUsageUpdateManager = $entity_usage_update_manager;
$this->database = $database_service;
$this->logger = $logger;
}
/**
......@@ -83,7 +93,8 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
$plugin_definition,
$container->get('entity_type.manager'),
$container->get('entity_usage.entity_update_manager'),
$container->get('database')
$container->get('database'),
$container->get('logger.factory')->get('entity_usage_tracker')
);
}
......@@ -92,21 +103,35 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
*/
public function processItem($data) {
$this->logger->info('Processing queue item for entity type: @entity_type, entity ID: @entity_id, operation: @operation.', [
'@entity_type' => $data['entity_type'],
'@entity_id' => $data['entity_id'],
'@operation' => $data['operation'],
]);
$storage = $this->entityTypeManager->getStorage($data['entity_type']);
if (!$storage) {
$this->logger->error('No storage found for entity type: @entity_type.', ['@entity_type' => $data['entity_type']]);
return;
}
$entity = $storage->load($data['entity_id']);
if (!$entity) {
$this->logger->error('Entity not found: Entity type @entity_type, Entity ID @entity_id.', [
'@entity_type' => $data['entity_type'],
'@entity_id' => $data['entity_id'],
]);
return;
}
switch ($data['operation']) {
case 'insert':
case 'update':
$this->logger->info('Tracking update or insert for entity type @entity_type, entity ID @entity_id.', [
'@entity_type' => $data['entity_type'],
'@entity_id' => $data['entity_id'],
]);
$this->entityUsageUpdateManager->trackUpdateOnCreation($entity);
if ($entity instanceof RevisionableInterface) {
// Delete records from non-current revision ids.
......@@ -116,20 +141,43 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
->condition('source_id', $entity->id())
->condition('source_vid', $entity->getRevisionId(), '<>')
->execute();
$this->logger->info('Deleted old revision usage records for entity type @entity_type, entity ID @entity_id.', [
'@entity_type' => $data['entity_type'],
'@entity_id' => $data['entity_id'],
]);
}
break;
case 'predelete':
$this->logger->info('Tracking deletion for entity type @entity_type, entity ID @entity_id.', [
'@entity_type' => $data['entity_type'],
'@entity_id' => $data['entity_id'],
]);
$this->entityUsageUpdateManager->trackUpdateOnDeletion($entity);
break;
case 'translation_delete':
$this->logger->info('Tracking translation deletion for entity type @entity_type, entity ID @entity_id.', [
'@entity_type' => $data['entity_type'],
'@entity_id' => $data['entity_id'],
]);
$this->entityUsageUpdateManager->trackUpdateOnDeletion($entity, 'translation');
break;
case 'revision_delete':
$this->logger->info('Tracking revision deletion for entity type @entity_type, entity ID @entity_id.', [
'@entity_type' => $data['entity_type'],
'@entity_id' => $data['entity_id'],
]);
$this->entityUsageUpdateManager->trackUpdateOnDeletion($entity, 'revision');
break;
default:
$this->logger->warning('Unknown operation "@operation" for entity type @entity_type, entity ID @entity_id.', [
'@operation' => $data['operation'],
'@entity_type' => $data['entity_type'],
'@entity_id' => $data['entity_id'],
]);
break;
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment