Browse Source

fix: logs formatting during transition for better readability

Karol Sójko 1 year ago
parent
commit
0ae028db73

+ 5 - 7
packages/revisions/src/Domain/Handler/TransitionRequestedEventHandler.ts

@@ -29,7 +29,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
     }
 
     if (await this.isAlreadyMigrated(userUuid)) {
-      this.logger.info(`User ${event.payload.userUuid} already migrated.`)
+      this.logger.info(`[${event.payload.userUuid}] User already migrated.`)
 
       await this.domainEventPublisher.publish(
         this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -43,7 +43,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
       return
     }
 
-    this.logger.info(`Handling transition requested event for user ${event.payload.userUuid}`)
+    this.logger.info(`[${event.payload.userUuid}] Handling transition requested event`)
 
     await this.domainEventPublisher.publish(
       this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -59,7 +59,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
     })
 
     if (result.isFailed()) {
-      this.logger.error(`Failed to transition for user ${event.payload.userUuid}`)
+      this.logger.error(`[${event.payload.userUuid}] Failed to transition: ${result.getError()}`)
 
       await this.domainEventPublisher.publish(
         this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -88,7 +88,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
 
     if (totalRevisionsCountForUserInPrimary > 0) {
       this.logger.info(
-        `User ${userUuid.value} has ${totalRevisionsCountForUserInPrimary} revisions in primary database.`,
+        `[${userUuid.value}] User has ${totalRevisionsCountForUserInPrimary} revisions in primary database.`,
       )
     }
 
@@ -98,9 +98,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
   private async getUserUuidFromEvent(event: TransitionRequestedEvent): Promise<Uuid | null> {
     const userUuidOrError = Uuid.create(event.payload.userUuid)
     if (userUuidOrError.isFailed()) {
-      this.logger.error(
-        `Failed to transition revisions for user ${event.payload.userUuid}: ${userUuidOrError.getError()}`,
-      )
+      this.logger.error(`[${event.payload.userUuid}] Failed to transition revisions: ${userUuidOrError.getError()}`)
       await this.domainEventPublisher.publish(
         this.domainEventFactory.createTransitionStatusUpdatedEvent({
           userUuid: event.payload.userUuid,

+ 22 - 19
packages/revisions/src/Domain/UseCase/Transition/TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser/TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser.ts

@@ -17,7 +17,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
   ) {}
 
   async execute(dto: TransitionRevisionsFromPrimaryToSecondaryDatabaseForUserDTO): Promise<Result<void>> {
-    this.logger.info(`Transitioning revisions for user ${dto.userUuid}`)
+    this.logger.info(`[${dto.userUuid}] Transitioning revisions for user`)
 
     if (this.secondRevisionsRepository === null) {
       return Result.fail('Secondary revision repository is not set')
@@ -36,7 +36,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
         await this.getNewRevisionsCreatedInSecondaryDatabase(userUuid)
 
       for (const existingRevisionUuid of alreadyExistingInPrimary) {
-        this.logger.info(`Removing revision ${existingRevisionUuid} from secondary database`)
+        this.logger.info(`[${dto.userUuid}] Removing revision ${existingRevisionUuid} from secondary database`)
         await (this.secondRevisionsRepository as RevisionRepositoryInterface).removeOneByUuid(
           Uuid.create(existingRevisionUuid).getValue(),
           userUuid,
@@ -45,16 +45,14 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
 
       if (newRevisionsInSecondary.length > 0) {
         this.logger.info(
-          `Found ${newRevisionsInSecondary.length} new revisions in secondary database for user ${userUuid.value}`,
+          `[${dto.userUuid}] Found ${newRevisionsInSecondary.length} new revisions in secondary database`,
         )
       }
 
       newRevisionsInSecondaryCount = newRevisionsInSecondary.length
 
       if (updatedInSecondary.length > 0) {
-        this.logger.info(
-          `Found ${updatedInSecondary.length} updated revisions in secondary database for user ${userUuid.value}`,
-        )
+        this.logger.info(`[${dto.userUuid}] Found ${updatedInSecondary.length} updated revisions in secondary database`)
       }
 
       updatedRevisionsInSecondary = updatedInSecondary
@@ -66,7 +64,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
 
     const migrationTimeStart = this.timer.getTimestampInMicroseconds()
 
-    this.logger.debug(`Transitioning revisions for user ${userUuid.value}`)
+    this.logger.debug(`[${dto.userUuid}] Transitioning revisions`)
 
     const migrationResult = await this.migrateRevisionsForUser(userUuid, updatedRevisionsInSecondary)
     if (migrationResult.isFailed()) {
@@ -74,7 +72,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
         const cleanupResult = await this.deleteRevisionsForUser(userUuid, this.secondRevisionsRepository)
         if (cleanupResult.isFailed()) {
           this.logger.error(
-            `Failed to clean up secondary database revisions for user ${userUuid.value}: ${cleanupResult.getError()}`,
+            `[${dto.userUuid}] Failed to clean up secondary database revisions: ${cleanupResult.getError()}`,
           )
         }
       }
@@ -94,7 +92,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
         const cleanupResult = await this.deleteRevisionsForUser(userUuid, this.secondRevisionsRepository)
         if (cleanupResult.isFailed()) {
           this.logger.error(
-            `Failed to clean up secondary database revisions for user ${userUuid.value}: ${cleanupResult.getError()}`,
+            `[${dto.userUuid}] Failed to clean up secondary database revisions: ${cleanupResult.getError()}`,
           )
         }
       }
@@ -104,9 +102,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
 
     const cleanupResult = await this.deleteRevisionsForUser(userUuid, this.primaryRevisionsRepository)
     if (cleanupResult.isFailed()) {
-      this.logger.error(
-        `Failed to clean up primary database revisions for user ${userUuid.value}: ${cleanupResult.getError()}`,
-      )
+      this.logger.error(`[${dto.userUuid}] Failed to clean up primary database revisions: ${cleanupResult.getError()}`)
     }
 
     const migrationTimeEnd = this.timer.getTimestampInMicroseconds()
@@ -115,7 +111,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
     const migrationDurationTimeStructure = this.timer.convertMicrosecondsToTimeStructure(migrationDuration)
 
     this.logger.info(
-      `Transitioned revisions for user ${userUuid.value} in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
+      `[${dto.userUuid}] Transitioned revisions in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
     )
 
     return Result.ok()
@@ -141,14 +137,16 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
               updatedRevisionsInSecondary.find((updatedRevisionUuid) => updatedRevisionUuid === revision.id.toString())
             ) {
               this.logger.info(
-                `Skipping saving revision ${revision.id.toString()} as it was updated in secondary database`,
+                `[${
+                  userUuid.value
+                }] Skipping saving revision ${revision.id.toString()} as it was updated in secondary database`,
               )
 
               continue
             }
 
             this.logger.debug(
-              `Transitioning revision #${
+              `[${userUuid.value}]Transitioning revision #${
                 totalRevisionsCountTransitionedToSecondary + 1
               }: ${revision.id.toString()} to secondary database`,
             )
@@ -168,7 +166,9 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
         }
       }
 
-      this.logger.debug(`Transitioned ${totalRevisionsCountTransitionedToSecondary} revisions to secondary database`)
+      this.logger.debug(
+        `[${userUuid.value}] Transitioned ${totalRevisionsCountTransitionedToSecondary} revisions to secondary database`,
+      )
 
       return Result.ok()
     } catch (error) {
@@ -202,7 +202,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
     const hasAlreadyDataInSecondaryDatabase = totalRevisionsCountForUserInSecondary > 0
     if (hasAlreadyDataInSecondaryDatabase) {
       this.logger.info(
-        `User ${userUuid.value} has already ${totalRevisionsCountForUserInSecondary} revisions in secondary database`,
+        `[${userUuid.value}] User has already ${totalRevisionsCountForUserInSecondary} revisions in secondary database`,
       )
     }
 
@@ -272,7 +272,8 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
 
     if (!revision.isIdenticalTo(revisionInPrimary)) {
       this.logger.error(
-        `Revision ${revision.id.toString()} is not identical in primary and secondary database. Revision in secondary database: ${JSON.stringify(
+        `[${revision.props.userUuid
+          ?.value}] Revision ${revision.id.toString()} is not identical in primary and secondary database. Revision in secondary database: ${JSON.stringify(
           revision,
         )}, revision in primary database: ${JSON.stringify(revisionInPrimary)}`,
       )
@@ -327,7 +328,9 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
             updatedRevisionsInSecondary.find((updatedRevisionUuid) => updatedRevisionUuid === revision.id.toString())
           ) {
             this.logger.info(
-              `Skipping integrity check for revision ${revision.id.toString()} as it was updated in secondary database`,
+              `[${
+                userUuid.value
+              }] Skipping integrity check for revision ${revision.id.toString()} as it was updated in secondary database`,
             )
             continue
           }

+ 5 - 5
packages/syncing-server/src/Domain/Handler/TransitionRequestedEventHandler.ts

@@ -30,7 +30,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
     }
 
     if (await this.isAlreadyMigrated(userUuid)) {
-      this.logger.info(`User ${event.payload.userUuid} already migrated.`)
+      this.logger.info(`[${event.payload.userUuid}] User already migrated.`)
 
       await this.domainEventPublisher.publish(
         this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -44,7 +44,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
       return
     }
 
-    this.logger.info(`Handling transition requested event for user ${event.payload.userUuid}`)
+    this.logger.info(`[${event.payload.userUuid}] Handling transition requested event`)
 
     await this.domainEventPublisher.publish(
       this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -60,7 +60,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
     })
 
     if (result.isFailed()) {
-      this.logger.error(`Failed to trigger transition for user ${event.payload.userUuid}`)
+      this.logger.error(`[${event.payload.userUuid}] Failed to trigger transition: ${result.getError()}`)
 
       await this.domainEventPublisher.publish(
         this.domainEventFactory.createTransitionStatusUpdatedEvent({
@@ -90,7 +90,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
     })
 
     if (totalItemsCountForUserInPrimary > 0) {
-      this.logger.info(`User ${userUuid.value} has ${totalItemsCountForUserInPrimary} items in primary database.`)
+      this.logger.info(`[${userUuid.value}] User has ${totalItemsCountForUserInPrimary} items in primary database.`)
     }
 
     return totalItemsCountForUserInPrimary === 0
@@ -99,7 +99,7 @@ export class TransitionRequestedEventHandler implements DomainEventHandlerInterf
   private async getUserUuidFromEvent(event: TransitionRequestedEvent): Promise<Uuid | null> {
     const userUuidOrError = Uuid.create(event.payload.userUuid)
     if (userUuidOrError.isFailed()) {
-      this.logger.error(`Failed to transition items for user ${event.payload.userUuid}: ${userUuidOrError.getError()}`)
+      this.logger.error(`[${event.payload.userUuid}] Failed to transition items: ${userUuidOrError.getError()}`)
 
       await this.domainEventPublisher.publish(
         this.domainEventFactory.createTransitionStatusUpdatedEvent({

+ 17 - 19
packages/syncing-server/src/Domain/UseCase/Transition/TransitionItemsFromPrimaryToSecondaryDatabaseForUser/TransitionItemsFromPrimaryToSecondaryDatabaseForUser.ts

@@ -18,7 +18,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
   ) {}
 
   async execute(dto: TransitionItemsFromPrimaryToSecondaryDatabaseForUserDTO): Promise<Result<void>> {
-    this.logger.info(`Transitioning items for user ${dto.userUuid}`)
+    this.logger.info(`[${dto.userUuid}] Transitioning items`)
 
     if (this.secondaryItemRepository === null) {
       return Result.fail('Secondary item repository is not set')
@@ -37,24 +37,20 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
         await this.getNewItemsCreatedInSecondaryDatabase(userUuid)
 
       for (const existingItemUuid of alreadyExistingInPrimary) {
-        this.logger.info(`Removing item ${existingItemUuid} from secondary database`)
+        this.logger.info(`[${dto.userUuid}] Removing item ${existingItemUuid} from secondary database.`)
         await (this.secondaryItemRepository as ItemRepositoryInterface).removeByUuid(
           Uuid.create(existingItemUuid).getValue(),
         )
       }
 
       if (newItemsInSecondary.length > 0) {
-        this.logger.info(
-          `Found ${newItemsInSecondary.length} new items in secondary database for user ${userUuid.value}`,
-        )
+        this.logger.info(`[${dto.userUuid}] Found ${newItemsInSecondary.length} new items in secondary database.`)
       }
 
       newItemsInSecondaryCount = newItemsInSecondary.length
 
       if (updatedInSecondary.length > 0) {
-        this.logger.info(
-          `Found ${updatedInSecondary.length} updated items in secondary database for user ${userUuid.value}`,
-        )
+        this.logger.info(`[${dto.userUuid}] Found ${updatedInSecondary.length} updated items in secondary database.`)
       }
 
       updatedItemsInSecondary = updatedInSecondary
@@ -71,7 +67,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
         const cleanupResult = await this.deleteItemsForUser(userUuid, this.secondaryItemRepository)
         if (cleanupResult.isFailed()) {
           this.logger.error(
-            `Failed to clean up secondary database items for user ${userUuid.value}: ${cleanupResult.getError()}`,
+            `[${dto.userUuid}] Failed to clean up secondary database items: ${cleanupResult.getError()}`,
           )
         }
       }
@@ -91,7 +87,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
         const cleanupResult = await this.deleteItemsForUser(userUuid, this.secondaryItemRepository)
         if (cleanupResult.isFailed()) {
           this.logger.error(
-            `Failed to clean up secondary database items for user ${userUuid.value}: ${cleanupResult.getError()}`,
+            `[${dto.userUuid}] Failed to clean up secondary database items: ${cleanupResult.getError()}`,
           )
         }
       }
@@ -101,9 +97,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
 
     const cleanupResult = await this.deleteItemsForUser(userUuid, this.primaryItemRepository)
     if (cleanupResult.isFailed()) {
-      this.logger.error(
-        `Failed to clean up primary database items for user ${userUuid.value}: ${cleanupResult.getError()}`,
-      )
+      this.logger.error(`[${dto.userUuid}] Failed to clean up primary database items: ${cleanupResult.getError()}`)
     }
 
     const migrationTimeEnd = this.timer.getTimestampInMicroseconds()
@@ -112,7 +106,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
     const migrationDurationTimeStructure = this.timer.convertMicrosecondsToTimeStructure(migrationDuration)
 
     this.logger.info(
-      `Transitioned items for user ${userUuid.value} in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
+      `[${dto.userUuid}] Transitioned items in ${migrationDurationTimeStructure.hours}h ${migrationDurationTimeStructure.minutes}m ${migrationDurationTimeStructure.seconds}s ${migrationDurationTimeStructure.milliseconds}ms`,
     )
 
     return Result.ok()
@@ -125,7 +119,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
 
     const hasAlreadyDataInSecondaryDatabase = totalItemsCountForUser > 0
     if (hasAlreadyDataInSecondaryDatabase) {
-      this.logger.info(`User ${userUuid.value} has already ${totalItemsCountForUser} items in secondary database`)
+      this.logger.info(`[${userUuid.value}] User has already ${totalItemsCountForUser} items in secondary database`)
     }
 
     return hasAlreadyDataInSecondaryDatabase
@@ -192,9 +186,11 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
 
     if (!item.isIdenticalTo(itemInPrimary)) {
       this.logger.error(
-        `Revision ${item.id.toString()} is not identical in primary and secondary database. Revision in secondary database: ${JSON.stringify(
+        `[${
+          item.props.userUuid.value
+        }] Item ${item.id.toString()} is not identical in primary and secondary database. Item in secondary database: ${JSON.stringify(
           item,
-        )}, revision in primary database: ${JSON.stringify(itemInPrimary)}`,
+        )}, item in primary database: ${JSON.stringify(itemInPrimary)}`,
       )
 
       return {
@@ -223,7 +219,9 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
 
         for (const item of items) {
           if (updatedItemsInSecondary.find((updatedItemUuid) => item.uuid.value === updatedItemUuid)) {
-            this.logger.info(`Skipping saving item ${item.uuid.value} as it was updated in secondary database`)
+            this.logger.info(
+              `[${userUuid.value}] Skipping saving item ${item.uuid.value} as it was updated in secondary database`,
+            )
 
             continue
           }
@@ -286,7 +284,7 @@ export class TransitionItemsFromPrimaryToSecondaryDatabaseForUser implements Use
 
           if (updatedItemsInSecondary.find((updatedItemUuid) => item.uuid.value === updatedItemUuid)) {
             this.logger.info(
-              `Skipping integrity check for item ${item.uuid.value} as it was updated in secondary database`,
+              `[${userUuid.value}] Skipping integrity check for item ${item.uuid.value} as it was updated in secondary database`,
             )
             continue
           }