Skip to content
Snippets Groups Projects

Issue #3473408 by arthur.baghdasar: Add logging

1 file
+ 51
3
Compare changes
  • Side-by-side
  • Inline
@@ -6,8 +6,8 @@ use Drupal\Core\Entity\EntityTypeManagerInterface;
@@ -6,8 +6,8 @@ use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Queue\QueueWorkerBase;
use Drupal\Core\Queue\QueueWorkerBase;
use Drupal\entity_usage\EntityUpdateManager;
use Drupal\entity_usage\EntityUpdateManager;
 
use Psr\Log\LoggerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\RevisionableInterface;
use Drupal\Core\Entity\RevisionableInterface;
use Drupal\Core\Database\Connection;
use Drupal\Core\Database\Connection;
@@ -22,6 +22,13 @@ use Drupal\Core\Database\Connection;
@@ -22,6 +22,13 @@ use Drupal\Core\Database\Connection;
*/
*/
class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPluginInterface {
class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPluginInterface {
 
/**
 
* The logger.
 
*
 
* @var \Psr\Log\LoggerInterface
 
*/
 
protected $logger;
 
/**
/**
* The entity type manager service.
* The entity type manager service.
*
*
@@ -65,12 +72,15 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
@@ -65,12 +72,15 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
* Entity usage update manager.
* Entity usage update manager.
* @param \Drupal\Core\Database\Connection $database_service
* @param \Drupal\Core\Database\Connection $database_service
* The Drupal 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);
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->entityTypeManager = $entity_type_manager;
$this->entityTypeManager = $entity_type_manager;
$this->entityUsageUpdateManager = $entity_usage_update_manager;
$this->entityUsageUpdateManager = $entity_usage_update_manager;
$this->database = $database_service;
$this->database = $database_service;
 
$this->logger = $logger;
}
}
/**
/**
@@ -83,7 +93,8 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
@@ -83,7 +93,8 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
$plugin_definition,
$plugin_definition,
$container->get('entity_type.manager'),
$container->get('entity_type.manager'),
$container->get('entity_usage.entity_update_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
@@ -92,21 +103,35 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
*/
*/
public function processItem($data) {
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']);
$storage = $this->entityTypeManager->getStorage($data['entity_type']);
if (!$storage) {
if (!$storage) {
 
$this->logger->error('No storage found for entity type: @entity_type.', ['@entity_type' => $data['entity_type']]);
return;
return;
}
}
$entity = $storage->load($data['entity_id']);
$entity = $storage->load($data['entity_id']);
if (!$entity) {
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;
return;
}
}
switch ($data['operation']) {
switch ($data['operation']) {
case 'insert':
case 'insert':
case 'update':
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);
$this->entityUsageUpdateManager->trackUpdateOnCreation($entity);
if ($entity instanceof RevisionableInterface) {
if ($entity instanceof RevisionableInterface) {
// Delete records from non-current revision ids.
// Delete records from non-current revision ids.
@@ -116,20 +141,43 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
@@ -116,20 +141,43 @@ class EntityUsageTracker extends QueueWorkerBase implements ContainerFactoryPlug
->condition('source_id', $entity->id())
->condition('source_id', $entity->id())
->condition('source_vid', $entity->getRevisionId(), '<>')
->condition('source_vid', $entity->getRevisionId(), '<>')
->execute();
->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;
break;
case 'predelete':
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);
$this->entityUsageUpdateManager->trackUpdateOnDeletion($entity);
break;
break;
case 'translation_delete':
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');
$this->entityUsageUpdateManager->trackUpdateOnDeletion($entity, 'translation');
break;
break;
case 'revision_delete':
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');
$this->entityUsageUpdateManager->trackUpdateOnDeletion($entity, 'revision');
break;
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;
}
}
}
}
Loading