From b39de0d87004d7c7fbc665193b543887cbafa1da Mon Sep 17 00:00:00 2001 From: XShine555 Date: Sat, 28 Mar 2026 21:26:45 +0100 Subject: [PATCH] Changes on messages --- .../Handlers/CreatePlayListCommandHandler.cs | 20 +++--- .../Handlers/DeletePlayListCommandHandler.cs | 10 +-- .../Handlers/GetPlayListByIdQueryHandler.cs | 4 +- .../Handlers/UpdatePlayListCommandHandler.cs | 26 ++++---- .../Handler/CreateTrackCommandHandler.cs | 17 +++-- .../Handler/DeleteTrackCommandHandler.cs | 9 ++- .../Handlers/CreateUserCommandHandler.cs | 14 ++--- .../Handlers/DeleteUserCommandHandler.cs | 1 - .../Users/Handlers/GetUserByIdQueryHandler.cs | 8 +-- .../Handlers/GetUserByKeycloakQueryHandler.cs | 6 +- Infrastructure/Audio/AudioTranscoder.cs | 62 +++++++------------ .../Identity/KeycloakUserService.cs | 8 +-- .../GenerateAudioWorkflowPathsActivity.cs | 7 +-- .../Audio/TranscodeDashAudioActivity.cs | 10 +-- .../Audio/UpdateTrackAudioActivity.cs | 10 +-- .../Files/DownloadFileFromBucketActivity.cs | 8 +-- .../Files/RemoveFileFromBucketActivity.cs | 6 +- .../Files/TransferFilesToBucketActivity.cs | 8 +-- .../Files/UploadFileToBucketActivity.cs | 11 ++-- .../GeneratePictureWorkflowPathsActivity.cs | 7 +-- .../Pictures/ResizePictureActivity.cs | 12 ++-- .../Pictures/UpdatePlayListPictureActivity.cs | 10 +-- .../Pictures/UpdateTrackPictureActivity.cs | 10 +-- Infrastructure/Pictures/PictureHandler.cs | 10 +-- Infrastructure/Storage/StorageHandler.cs | 38 ++++++------ 25 files changed, 153 insertions(+), 179 deletions(-) diff --git a/Application/PlayLists/Handlers/CreatePlayListCommandHandler.cs b/Application/PlayLists/Handlers/CreatePlayListCommandHandler.cs index edccb2d..2ca01c9 100644 --- a/Application/PlayLists/Handlers/CreatePlayListCommandHandler.cs +++ b/Application/PlayLists/Handlers/CreatePlayListCommandHandler.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using DispatchR.Abstractions.Send; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; @@ -22,8 +22,8 @@ namespace Musify.Application.PlayLists.Handlers var userExists = await database.Users.AnyAsync(u => u.Id == request.UserId, cancellationToken); if (!userExists) { - logger.LogWarning("User with Id={UserId} does not exist.", request.UserId); - return Result.NotFound($"User with Id {request.UserId} does not exist."); + logger.LogWarning("User {UserId} not found", request.UserId); + return Result.NotFound($"User {request.UserId} not found"); } var playListEntity = CreatePlayListCommand.ToEntity(request, @@ -54,11 +54,11 @@ namespace Musify.Application.PlayLists.Handlers catch (Exception exception) { await RollbackPicture(playListEntity, cancellationToken); - logger.LogError(exception, "Failed to create PlayList for user with id={UserId}.", request.UserId); - return Result.Error($"Failed to create PlayList for user with id {request.UserId}."); + logger.LogError(exception, "Failed to create playlist for user {UserId}", request.UserId); + return Result.Error($"Failed to create playlist for user {request.UserId}"); } - logger.LogInformation("PlayList with id={PlayListId} created successfully for user with id={UserId}.", playListEntity.Id, request.UserId); + logger.LogInformation("Created playlist {PlayListId} for user {UserId}", playListEntity.Id, request.UserId); return Result.Created(PlayListResponse.FromEntity(playListEntity)); } @@ -71,7 +71,7 @@ namespace Musify.Application.PlayLists.Handlers } catch (Exception exception) { - logger.LogError(exception, "Failed to rollback picture upload for PlayList with Id={PlayListId}.", playList.Id); + logger.LogError(exception, "Failed to rollback picture upload for playlist {PlayListId}", playList.Id); } } @@ -83,7 +83,7 @@ namespace Musify.Application.PlayLists.Handlers var uploadResult = await storageHandler.UploadFileAsync(picture.FileStream, picture.ContentType, storageConfiguration.BucketName, pictureKey, cancellationToken); if (!uploadResult.IsSuccess) { - logger.LogError("Failed to upload picture for PlayList with Id={PlayListId} to storage. Storage handler returned error={ErrorMessage}.", + logger.LogError("Failed to upload picture for playlist {PlayListId} to storage: {ErrorMessage}", playList.Id, string.Join(", ", uploadResult.Errors)); return uploadResult.ToErrorResult(); } @@ -118,8 +118,8 @@ namespace Musify.Application.PlayLists.Handlers } catch (Exception exception) { - logger.LogError(exception, "Failed to publish UpdatePlayListPictureEvent for PlayList with Id={PlayListId}.", playList.Id); - return Result.Error($"Failed to publish UpdatePlayListPictureEvent for PlayList with Id {playList.Id}."); + logger.LogError(exception, "Failed to publish playlist picture update event for playlist {PlayListId}", playList.Id); + return Result.Error($"Failed to publish playlist {playList.Id} picture update event"); } } } diff --git a/Application/PlayLists/Handlers/DeletePlayListCommandHandler.cs b/Application/PlayLists/Handlers/DeletePlayListCommandHandler.cs index 4f5be7c..47c33fb 100644 --- a/Application/PlayLists/Handlers/DeletePlayListCommandHandler.cs +++ b/Application/PlayLists/Handlers/DeletePlayListCommandHandler.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using DispatchR.Abstractions.Send; using Microsoft.Extensions.Logging; using Musify.Application.Configuration; @@ -19,13 +19,13 @@ namespace Musify.Application.PlayLists.Handlers cancellationToken); if (playList is null) { - logger.LogDebug("PlayList with id={PlayListId} not found", request.PlayListId); + logger.LogDebug("Playlist {PlayListId} not found", request.PlayListId); return Result.NotFound(); } if (playList.UserId != request.UserId) { - logger.LogInformation("PlayList with id={PlayListId} does not belong to user with id={UserId}", request.PlayListId, request.UserId); + logger.LogWarning("Playlist {PlayListId} does not belong to user {UserId}", request.PlayListId, request.UserId); return Result.Unauthorized(); } @@ -56,8 +56,8 @@ namespace Musify.Application.PlayLists.Handlers } catch (Exception exception) { - logger.LogError(exception, "Failed to publish remove file event for PlayList id={PlayListId} and key={Key}.", playListId, key); - return Result.Error($"Failed to publish remove file event for PlayList with id {playListId}."); + logger.LogError(exception, "Failed to publish remove file event for playlist {PlayListId} with key {Key}", playListId, key); + return Result.Error($"Failed to publish remove file event for playlist {playListId}"); } } } diff --git a/Application/PlayLists/Handlers/GetPlayListByIdQueryHandler.cs b/Application/PlayLists/Handlers/GetPlayListByIdQueryHandler.cs index 55301ab..d007186 100644 --- a/Application/PlayLists/Handlers/GetPlayListByIdQueryHandler.cs +++ b/Application/PlayLists/Handlers/GetPlayListByIdQueryHandler.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using DispatchR.Abstractions.Send; using Microsoft.EntityFrameworkCore; using Musify.Application.Contracts.Infrastructure; @@ -18,7 +18,7 @@ namespace Musify.Application.PlayLists.Handlers return playList is not null ? Result.Success(PlayListResponse.FromEntity(playList)) - : Result.NotFound("Playlist not found."); + : Result.NotFound("Playlist not found"); } } } \ No newline at end of file diff --git a/Application/PlayLists/Handlers/UpdatePlayListCommandHandler.cs b/Application/PlayLists/Handlers/UpdatePlayListCommandHandler.cs index 4666966..326f19b 100644 --- a/Application/PlayLists/Handlers/UpdatePlayListCommandHandler.cs +++ b/Application/PlayLists/Handlers/UpdatePlayListCommandHandler.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using DispatchR.Abstractions.Send; using Microsoft.Extensions.Logging; using Musify.Application.Configuration; @@ -24,13 +24,13 @@ namespace Musify.Application.PlayLists.Handlers cancellationToken); if (playListEntity is null) { - logger.LogInformation("PlayList with id={PlayListId} not found.", request.PlayListId); + logger.LogInformation("Playlist {PlayListId} not found", request.PlayListId); return Result.NotFound(); } if (playListEntity.UserId != request.UserId) { - logger.LogWarning("User with id={UserId} is not the owner of the PlayList with id={PlayListId}.", request.UserId, request.PlayListId); + logger.LogWarning("User {UserId} is not the owner of playlist {PlayListId}", request.UserId, request.PlayListId); return Result.Unauthorized(); } @@ -50,11 +50,11 @@ namespace Musify.Application.PlayLists.Handlers catch (Exception exception) { await Rollback(updatePictureResult.Value, cancellationToken); - logger.LogError(exception, "Failed to update PlayList with id={PlayListId}.", playListEntity.Id); - return Result.Error($"Failed to update PlayList with id {playListEntity.Id}."); + logger.LogError(exception, "Failed to update playlist {PlayListId}", playListEntity.Id); + return Result.Error($"Failed to update playlist {playListEntity.Id}"); } - logger.LogInformation("Successfully updated PlayList with id={PlayListId}.", playListEntity.Id); + logger.LogInformation("Updated playlist {PlayListId}", playListEntity.Id); return Result.Success(PlayListResponse.FromEntity(playListEntity)); } @@ -89,9 +89,9 @@ namespace Musify.Application.PlayLists.Handlers if (!uploadResult.IsSuccess) { - logger.LogError("Failed to upload picture for PlayList with Id={PlayListId} to storage. Storage handler returned error?={ErrorMessage}", + logger.LogError("Failed to upload picture for playlist {PlayListId} to storage: {ErrorMessage}", playList.Id, string.Join("; ", uploadResult.Errors)); - return Result.Error($"Failed to upload picture for PlayList with Id {playList.Id} to storage."); + return Result.Error($"Failed to upload playlist {playList.Id} picture"); } playList.OriginalPictureName = pictureName; return Result.Success(pictureKey); @@ -122,8 +122,8 @@ namespace Musify.Application.PlayLists.Handlers } catch (Exception exception) { - logger.LogError(exception, "Failed to publish UpdatePlayListPictureEvent for PlayList with id={PlayListId}.", playList.Id); - return Result.Error($"Failed to publish UpdatePlayListPictureEvent for PlayList with id {playList.Id}."); + logger.LogError(exception, "Failed to publish playlist picture update event for playlist {PlayListId}", playList.Id); + return Result.Error($"Failed to publish playlist {playList.Id} picture update event"); } } @@ -152,7 +152,7 @@ namespace Musify.Application.PlayLists.Handlers storageConfiguration.BucketName, pictureKey, cancellationToken); - logger.LogInformation("Rolled back uploaded picture with key={PictureKey} from storage.", pictureKey); + logger.LogInformation("Rolled back uploaded picture {PictureKey} from storage", pictureKey); } async Task PublishRemoveFileEvent(string key, CancellationToken cancellationToken) @@ -166,8 +166,8 @@ namespace Musify.Application.PlayLists.Handlers } catch (Exception exception) { - logger.LogError(exception, "Failed to publish remove file event for key={Key}.", key); - return Result.Error($"Failed to publish remove file event for key {key}."); + logger.LogError(exception, "Failed to publish remove file event for key {Key}", key); + return Result.Error($"Failed to publish remove file event for {key}"); } } } diff --git a/Application/Tracks/Handler/CreateTrackCommandHandler.cs b/Application/Tracks/Handler/CreateTrackCommandHandler.cs index 893f644..60fe524 100644 --- a/Application/Tracks/Handler/CreateTrackCommandHandler.cs +++ b/Application/Tracks/Handler/CreateTrackCommandHandler.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using DispatchR.Abstractions.Send; using Microsoft.Extensions.Logging; using Musify.Application.Configuration; @@ -17,11 +17,10 @@ namespace Musify.Application.Tracks.Handler public async Task> Handle(CreateTrackCommand request, CancellationToken cancellationToken) { var userExists = await database.Users.FindAsync(request.UserId, cancellationToken); - if (userExists is null) { - logger.LogWarning("User with id={UserId} not found.", request.UserId); - return Result.NotFound($"User with id {request.UserId} not found."); + logger.LogWarning("User {UserId} not found", request.UserId); + return Result.NotFound($"User {request.UserId} not found"); } var trackEntity = CreateTrackCommand.ToEntity( @@ -60,7 +59,7 @@ namespace Musify.Application.Tracks.Handler if (!pictureUpload.IsSuccess) { var errors = string.Join(", ", pictureUpload.Errors); - return Result.Error($"Failed to upload picture for track {request.Title}. Errors: {errors}."); + return Result.Error($"Failed to upload picture for {request.Title}"); } var audioUpload = await storageHandler.UploadFileAsync( @@ -74,7 +73,7 @@ namespace Musify.Application.Tracks.Handler { await RollbackFilesAsync(pictureKey, audioKey, cancellationToken); var errors = string.Join(", ", audioUpload.Errors); - return Result.Error($"Failed to upload audio for track {request.Title}. Errors: {errors}."); + return Result.Error($"Failed to upload audio for {request.Title}"); } return Result.Success(); @@ -84,7 +83,7 @@ namespace Musify.Application.Tracks.Handler { await storageHandler.RemoveFileAsync(storageConfiguration.BucketName, pictureKey, cancellationToken); await storageHandler.RemoveFileAsync(storageConfiguration.BucketName, audioKey, cancellationToken); - logger.LogInformation("Rolled back uploaded files={PictureKey}, {AudioKey}.", pictureKey, audioKey); + logger.LogInformation("Rolled back uploaded files {PictureKey}, {AudioKey}", pictureKey, audioKey); } async Task PublishUpdateEvent(Track track, CancellationToken cancellationToken) @@ -110,7 +109,7 @@ namespace Musify.Application.Tracks.Handler } catch (Exception exception) { - logger.LogError(exception, "Failed to publish resize picture event for Track with id={TrackId}.", track.Id); + logger.LogError(exception, "Failed to publish track picture update event for track {TrackId}", track.Id); } } @@ -130,7 +129,7 @@ namespace Musify.Application.Tracks.Handler } catch (Exception exception) { - logger.LogError(exception, "Failed to publish transcode audio event for Track with id={TrackId}.", track.Id); + logger.LogError(exception, "Failed to publish track audio update event for track {TrackId}", track.Id); } } } diff --git a/Application/Tracks/Handler/DeleteTrackCommandHandler.cs b/Application/Tracks/Handler/DeleteTrackCommandHandler.cs index 6d765ea..a18cf24 100644 --- a/Application/Tracks/Handler/DeleteTrackCommandHandler.cs +++ b/Application/Tracks/Handler/DeleteTrackCommandHandler.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using DispatchR.Abstractions.Send; using Microsoft.Extensions.Logging; using Musify.Application.Configuration; @@ -15,16 +15,15 @@ namespace Musify.Application.Tracks.Handler public async Task Handle(DeleteTrackCommand request, CancellationToken cancellationToken) { var track = await database.Tracks.FindAsync(request.TrackId, cancellationToken); - if (track is null) { - logger.LogInformation("Track with id={TrackId} not found.", request.TrackId); + logger.LogInformation("Track {TrackId} not found", request.TrackId); return Result.NotFound(); } if (track.Id != request.UserId) { - logger.LogInformation("User with id={UserId} is not the owner of track with id={TrackId}.", request.UserId, request.TrackId); + logger.LogWarning("User {UserId} unauthorized to delete track {TrackId}", request.UserId, request.TrackId); return Result.Unauthorized(); } @@ -63,7 +62,7 @@ namespace Musify.Application.Tracks.Handler async Task RemoveFile(string path, CancellationToken cancellationToken) { await storageHandler.RemoveFileAsync(storageConfiguration.BucketName, path, cancellationToken); - logger.LogDebug("File with path={Path} removed from storage.", path); + logger.LogDebug("Removed file {Path} from storage", path); } } } \ No newline at end of file diff --git a/Application/Users/Handlers/CreateUserCommandHandler.cs b/Application/Users/Handlers/CreateUserCommandHandler.cs index 585016f..f085d77 100644 --- a/Application/Users/Handlers/CreateUserCommandHandler.cs +++ b/Application/Users/Handlers/CreateUserCommandHandler.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using DispatchR.Abstractions.Send; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; @@ -14,24 +14,24 @@ namespace Musify.Application.Users.Handlers public async Task> Handle(CreateUserCommand request, CancellationToken cancellationToken) { var userExists = await database.Users.AnyAsync(u => u.Id == request.Id, cancellationToken); - if (!userExists) + if (userExists) { - logger.LogInformation("User with Id={UserId} already exists.", request.Id); - return Result.Conflict($"A user with Id {request.Id} already exists."); + logger.LogInformation("User {UserId} already exists", request.Id); + return Result.Conflict($"User {request.Id} already exists"); } var keycloakUser = await keycloakUserClient.GetUserByIdAsync(request.Id.ToString(), cancellationToken); if (!keycloakUser.IsSuccess) { - logger.LogWarning("Keycloak user with Id={UserId} was not found.", request.Id); - return Result.NotFound("Keycloak user not found."); + logger.LogWarning("Keycloak user {UserId} not found", request.Id); + return Result.NotFound("Keycloak user not found"); } var newUser = CreateUserCommand.ToEntity(request); await database.Users.AddAsync(newUser, cancellationToken); await database.SaveChangesAsync(cancellationToken); - logger.LogInformation("User with Id={UserId} created successfully.", newUser.Id); + logger.LogInformation("Created user {UserId}", newUser.Id); return Result.Created(new UserResponse( newUser.Id.ToString(), keycloakUser.Value.Name, diff --git a/Application/Users/Handlers/DeleteUserCommandHandler.cs b/Application/Users/Handlers/DeleteUserCommandHandler.cs index dbab4e7..09b0c94 100644 --- a/Application/Users/Handlers/DeleteUserCommandHandler.cs +++ b/Application/Users/Handlers/DeleteUserCommandHandler.cs @@ -10,7 +10,6 @@ namespace Musify.Application.Users.Commands public async Task Handle(DeleteUserCommand request, CancellationToken cancellationToken) { var existingUser = await database.Users.FindAsync(request.Id, cancellationToken); - if (existingUser is null) return Result.NotFound(); diff --git a/Application/Users/Handlers/GetUserByIdQueryHandler.cs b/Application/Users/Handlers/GetUserByIdQueryHandler.cs index 44e0008..1332472 100644 --- a/Application/Users/Handlers/GetUserByIdQueryHandler.cs +++ b/Application/Users/Handlers/GetUserByIdQueryHandler.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using DispatchR.Abstractions.Send; using Microsoft.EntityFrameworkCore; using Musify.Application.Contracts.Infrastructure; @@ -15,14 +15,12 @@ namespace Musify.Application.Users.Handlers var user = await database.Users .AsNoTracking() .SingleOrDefaultAsync(u => u.Id == request.Id, cancellationToken); - if (user is null) - return Result.NotFound("User not found."); + return Result.NotFound("User not found"); var keycloakUser = await keycloakUserClient.GetUserByIdAsync(user.Id.ToString(), cancellationToken); - if (!keycloakUser.IsSuccess) - return Result.NotFound("Keycloak user not found."); + return Result.NotFound("Keycloak user not found"); return Result.Success(new UserResponse( user.Id.ToString(), diff --git a/Application/Users/Handlers/GetUserByKeycloakQueryHandler.cs b/Application/Users/Handlers/GetUserByKeycloakQueryHandler.cs index f8e89cc..d46792d 100644 --- a/Application/Users/Handlers/GetUserByKeycloakQueryHandler.cs +++ b/Application/Users/Handlers/GetUserByKeycloakQueryHandler.cs @@ -15,14 +15,12 @@ namespace Musify.Application.Users.Handlers var user = await database.Users .AsNoTracking() .SingleOrDefaultAsync(u => u.Id == request.Id, cancellationToken); - if (user is null) - return Result.NotFound("User not found."); + return Result.NotFound("User not found"); var keycloakUser = await keycloakUserClient.GetUserByIdAsync(user.Id.ToString(), cancellationToken); - if (!keycloakUser.IsSuccess) - return Result.NotFound("Keycloak user not found."); + return Result.NotFound("Keycloak user not found"); return Result.Success(new UserResponse( user.Id.ToString(), diff --git a/Infrastructure/Audio/AudioTranscoder.cs b/Infrastructure/Audio/AudioTranscoder.cs index cfe5212..bb7cd06 100644 --- a/Infrastructure/Audio/AudioTranscoder.cs +++ b/Infrastructure/Audio/AudioTranscoder.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using Microsoft.Extensions.Logging; using Musify.Application.Contracts.Infrastructure; using Musify.Infrastructure.Configuration; @@ -17,11 +17,7 @@ namespace Musify.Infrastructure.Audio { Directory.CreateDirectory(destinationPath); - logger.LogInformation( - "Starting audio transcoding to DASH. DestinationPath={DestinationPath}, Timeout={Timeout}, Executable={Executable}", - destinationPath, - audioTranscoderConfiguration.TranscodingTimeout, - audioTranscoderConfiguration.Ffmpeg.ExecutableName); + logger.LogInformation("Starting audio transcoding to DASH for {DestinationPath}", destinationPath); var executionResult = await ExecuteFfmpegWithInputAsync( BuildDashArguments(destinationPath, audioTranscoderConfiguration.Ffmpeg), @@ -32,25 +28,22 @@ namespace Musify.Infrastructure.Audio if (executionResult.ExitCode != 0) { - logger.LogError( - "Audio transcoding to DASH format failed with exit code={ExitCode}. Standard Output={StandardOutput}, Standard Error={StandardError}", - executionResult.ExitCode, - executionResult.StandardOutput, - executionResult.StandardError); - return Result.Error($"Audio transcoding failed with exit code: {executionResult.ExitCode}. See logs for details."); + logger.LogError("Audio transcoding to DASH failed with exit code {ExitCode}. Output: {StandardOutput}, Error: {StandardError}", + executionResult.ExitCode, executionResult.StandardOutput, executionResult.StandardError); + return Result.Error($"Audio transcoding failed (ExitCode: {executionResult.ExitCode})"); } - logger.LogInformation("Audio transcoding to DASH format completed successfully. DestinationPath={DestinationPath}", destinationPath); + logger.LogInformation("Audio transcoding to DASH completed for {DestinationPath}", destinationPath); return Result.Success(); } catch (TimeoutException timeoutException) { - logger.LogError(timeoutException, "Audio transcoding timed out after={Timeout}. DestinationPath={DestinationPath}", audioTranscoderConfiguration.TranscodingTimeout, destinationPath); - return Result.Error("Audio transcoding timed out."); + logger.LogError(timeoutException, "Audio transcoding timed out after {Timeout} for {DestinationPath}", audioTranscoderConfiguration.TranscodingTimeout, destinationPath); + return Result.Error("Audio transcoding timed out"); } catch (Exception exception) { - logger.LogError(exception, "An error occurred while transcoding audio to DASH format. DestinationPath={DestinationPath}", destinationPath); + logger.LogError(exception, "Failed to transcode audio to DASH for {DestinationPath}", destinationPath); return Result.Error(exception.Message); } } @@ -59,13 +52,13 @@ namespace Musify.Infrastructure.Audio { if (!File.Exists(filePath)) { - logger.LogWarning("Audio validation requested for a non-existing file. FilePath={FilePath}", filePath); + logger.LogWarning("Audio validation requested for non-existing file {FilePath}", filePath); return Result.Error($"Audio file not found: {filePath}"); } try { - logger.LogInformation("Starting audio file validation. FilePath={FilePath}, Timeout={Timeout}", filePath, audioTranscoderConfiguration.TranscodingTimeout); + logger.LogDebug("Validating audio file {FilePath}", filePath); var executionResult = await ExecuteFfmpegAsync( BuildValidateAudioArguments(filePath), @@ -76,26 +69,23 @@ namespace Musify.Infrastructure.Audio var isValid = executionResult.ExitCode == 0; if (!isValid) { - logger.LogWarning( - "Audio validation failed for file={FilePath}. Standard Error={StandardError}", - filePath, - executionResult.StandardError); + logger.LogWarning("Audio validation failed for {FilePath}: {StandardError}", filePath, executionResult.StandardError); } else { - logger.LogInformation("Audio validation completed successfully. FilePath={FilePath}", filePath); + logger.LogDebug("Audio validation successful for {FilePath}", filePath); } return Result.Success(isValid); } catch (TimeoutException timeoutException) { - logger.LogError(timeoutException, "Audio validation timed out after={Timeout} for file={FilePath}.", audioTranscoderConfiguration.TranscodingTimeout, filePath); + logger.LogError(timeoutException, "Audio validation timed out for {FilePath}", filePath); return Result.Error("Audio validation timed out."); } catch (Exception exception) { - logger.LogError(exception, "An error occurred while validating audio file={FilePath}.", filePath); + logger.LogError(exception, "Failed to validate audio file {FilePath}", filePath); return Result.Error(exception.Message); } } @@ -110,7 +100,7 @@ namespace Musify.Infrastructure.Audio using var process = BuildProcess(arguments, workingDirectory, redirectStandardInput: true); process.Start(); - logger.LogDebug("[{Operation}] ffmpeg process started. ProcessId={ProcessId}, WorkingDirectory={WorkingDirectory}", operationName, process.Id, workingDirectory); + logger.LogDebug("[{Operation}] ffmpeg started (PID: {ProcessId}) in {WorkingDirectory}", operationName, process.Id, workingDirectory); if (inputStream.CanSeek) inputStream.Position = 0; @@ -130,7 +120,7 @@ namespace Musify.Infrastructure.Audio using var process = BuildProcess(arguments, workingDirectory, redirectStandardInput: false); process.Start(); - logger.LogDebug("[{Operation}] ffmpeg process started. ProcessId={ProcessId}, WorkingDirectory={WorkingDirectory}", operationName, process.Id, workingDirectory); + logger.LogDebug("[{Operation}] ffmpeg started (PID: {ProcessId}) in {WorkingDirectory}", operationName, process.Id, workingDirectory); return await WaitForProcessResultAsync(process, operationName, cancellationToken); } @@ -168,11 +158,8 @@ namespace Musify.Infrastructure.Audio } catch (OperationCanceledException) when (!cancellationToken.IsCancellationRequested) { - logger.LogError( - "[{Operation}] ffmpeg timed out after={Timeout}. ProcessId={ProcessId}", - operationName, - audioTranscoderConfiguration.TranscodingTimeout, - process.Id); + logger.LogError("[{Operation}] ffmpeg timed out after {Timeout} (PID: {ProcessId})", + operationName, audioTranscoderConfiguration.TranscodingTimeout, process.Id); TryKillProcess(process); throw new TimeoutException($"ffmpeg execution exceeded timeout {audioTranscoderConfiguration.TranscodingTimeout}."); @@ -181,13 +168,8 @@ namespace Musify.Infrastructure.Audio var standardError = await errorTask; var standardOutput = await outputTask; - logger.LogDebug( - "[{Operation}] ffmpeg finished. ProcessId={ProcessId}, ExitCode={ExitCode}, StdOutLength={StdOutLength}, StdErrLength={StdErrLength}", - operationName, - process.Id, - process.ExitCode, - standardOutput.Length, - standardError.Length); + logger.LogDebug("[{Operation}] ffmpeg finished (PID: {ProcessId}). Exit code: {ExitCode}, Output: {OutputLength}B, Error: {ErrorLength}B", + operationName, process.Id, process.ExitCode, standardOutput.Length, standardError.Length); return new FfmpegExecutionResult(process.ExitCode, standardOutput, standardError); } @@ -201,7 +183,7 @@ namespace Musify.Infrastructure.Audio } catch (Exception exception) { - logger.LogError(exception, "Failed to kill ffmpeg process. ProcessId={ProcessId}", process.Id); + logger.LogError(exception, "Failed to kill ffmpeg process (PID: {ProcessId})", process.Id); } } diff --git a/Infrastructure/Identity/KeycloakUserService.cs b/Infrastructure/Identity/KeycloakUserService.cs index e725d1e..7efa649 100644 --- a/Infrastructure/Identity/KeycloakUserService.cs +++ b/Infrastructure/Identity/KeycloakUserService.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using Keycloak.Net; using Keycloak.Net.Models.Users; using Microsoft.Extensions.Logging; @@ -23,12 +23,12 @@ namespace Musify.Infrastructure.Identity } catch (OperationCanceledException) { - logger.LogError("Operation to retrieve Keycloak user with id={KeycloakId} was cancelled.", keycloakId); - return Result.Error("Operation was cancelled."); + logger.LogWarning("Operation to retrieve Keycloak user {KeycloakId} was cancelled", keycloakId); + return Result.Error("Operation cancelled"); } catch (Exception exception) { - logger.LogWarning(exception, "Keycloak user with id={KeycloakId} could not be retrieved.", keycloakId); + logger.LogWarning(exception, "Failed to retrieve Keycloak user {KeycloakId}", keycloakId); return Result.NotFound(); } return Result.Success(KeycloakUserMapper.Map(keycloakUser)); diff --git a/Infrastructure/MassTransit/Activities/Audio/GenerateAudioWorkflowPathsActivity.cs b/Infrastructure/MassTransit/Activities/Audio/GenerateAudioWorkflowPathsActivity.cs index a006bfd..6b0a597 100644 --- a/Infrastructure/MassTransit/Activities/Audio/GenerateAudioWorkflowPathsActivity.cs +++ b/Infrastructure/MassTransit/Activities/Audio/GenerateAudioWorkflowPathsActivity.cs @@ -38,9 +38,8 @@ namespace Musify.Infrastructure.MassTransit.Activities Directory.CreateDirectory(workingDirectory); - logger.LogDebug("Generated audio workflow paths. WorkingDirectory={WorkingDirectory}, SourceFilePath={SourceFilePath}", - workingDirectory, - sourceFilePath); + logger.LogDebug("Generated audio workflow paths in {WorkingDirectory}", + workingDirectory); await processTrackingStore.CompleteStepAsync(processId, stepId, executeContext.CancellationToken); return executeContext.CompletedWithVariables(new Dictionary @@ -53,7 +52,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error generating audio workflow paths for key={SourceKey}", + logger.LogError(exception, "Failed to generate audio workflow paths for {SourceKey}", executeContext.Arguments.SourceKey); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); throw; diff --git a/Infrastructure/MassTransit/Activities/Audio/TranscodeDashAudioActivity.cs b/Infrastructure/MassTransit/Activities/Audio/TranscodeDashAudioActivity.cs index 9629e4b..063e641 100644 --- a/Infrastructure/MassTransit/Activities/Audio/TranscodeDashAudioActivity.cs +++ b/Infrastructure/MassTransit/Activities/Audio/TranscodeDashAudioActivity.cs @@ -1,4 +1,4 @@ -using MassTransit; +using MassTransit; using Microsoft.Extensions.Logging; using Musify.Application.Contracts.Infrastructure; using Musify.Domain.Entities; @@ -48,7 +48,7 @@ namespace Musify.Infrastructure.MassTransit.Activities if (!result.IsSuccess) { var errorMessage = string.Join("; ", result.Errors); - logger.LogError("Transcoding failed for file={SourceFilePath}. Errors={ErrorMessage}", + logger.LogError("Transcoding failed for {SourceFilePath}: {Errors}", sourceFilePath, errorMessage); throw new Exception(errorMessage); } @@ -60,7 +60,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error during transcoding activity for file={SourceFilePath}", + logger.LogError(exception, "Failed to transcode {SourceFilePath}", sourceFilePath); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); throw; @@ -74,13 +74,13 @@ namespace Musify.Infrastructure.MassTransit.Activities if (Directory.Exists(compensateContext.Log.WorkingDirectory)) Directory.Delete(compensateContext.Log.WorkingDirectory, recursive: true); else - logger.LogWarning("Working directory={WorkingDirectory} does not exist during compensation", + logger.LogWarning("Working directory {WorkingDirectory} not found during compensation", compensateContext.Log.WorkingDirectory); return Task.FromResult(compensateContext.Compensated()); } catch (Exception exception) { - logger.LogError(exception, "Error compensating transcoded audio directory={WorkingDirectory}", compensateContext.Log.WorkingDirectory); + logger.LogError(exception, "Failed to compensate transcoded audio directory {WorkingDirectory}", compensateContext.Log.WorkingDirectory); return Task.FromResult(compensateContext.Failed(exception)); } } diff --git a/Infrastructure/MassTransit/Activities/Audio/UpdateTrackAudioActivity.cs b/Infrastructure/MassTransit/Activities/Audio/UpdateTrackAudioActivity.cs index 9381b48..7521aef 100644 --- a/Infrastructure/MassTransit/Activities/Audio/UpdateTrackAudioActivity.cs +++ b/Infrastructure/MassTransit/Activities/Audio/UpdateTrackAudioActivity.cs @@ -1,4 +1,4 @@ -using MassTransit; +using MassTransit; using Microsoft.Extensions.Logging; using Musify.Application.Contracts.Infrastructure; using Musify.Domain.Entities; @@ -39,7 +39,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Audio if (track is null) { - logger.LogWarning("Track with id={TrackId} not found", + logger.LogWarning("Track {TrackId} not found", executeContext.Arguments.TrackId); throw new InvalidOperationException($"Track with id {executeContext.Arguments.TrackId} not found"); } @@ -53,7 +53,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Audio database.Tracks.Update(track); await database.SaveChangesAsync(executeContext.CancellationToken); - logger.LogInformation("Updated Track={TrackId} audio", + logger.LogInformation("Updated track {TrackId} audio", executeContext.Arguments.TrackId); await processTrackingStore.CompleteStepAsync(processId, stepId, executeContext.CancellationToken); @@ -61,7 +61,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Audio } catch (Exception exception) { - logger.LogError(exception, "Error updating Track={TrackId} audio", + logger.LogError(exception, "Failed to update track {TrackId} audio", executeContext.Arguments.TrackId); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); throw; @@ -90,7 +90,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Audio } catch (Exception exception) { - logger.LogError(exception, "Error compensating Track={TrackId} audio", compensateContext.Log.TrackId); + logger.LogError(exception, "Failed to compensate track {TrackId} audio", compensateContext.Log.TrackId); return compensateContext.Failed(exception); } } diff --git a/Infrastructure/MassTransit/Activities/Files/DownloadFileFromBucketActivity.cs b/Infrastructure/MassTransit/Activities/Files/DownloadFileFromBucketActivity.cs index 62172f4..2a25174 100644 --- a/Infrastructure/MassTransit/Activities/Files/DownloadFileFromBucketActivity.cs +++ b/Infrastructure/MassTransit/Activities/Files/DownloadFileFromBucketActivity.cs @@ -1,4 +1,4 @@ -using MassTransit; +using MassTransit; using Microsoft.Extensions.Logging; using Musify.Application.Contracts.Infrastructure; using Musify.Domain.Entities; @@ -44,7 +44,7 @@ namespace Musify.Infrastructure.MassTransit.Activities if (!getFile.IsSuccess) { var errorMessage = string.Join("; ", getFile.Errors); - logger.LogWarning("Failed to download file from bucket. Bucket={Bucket}, Key={Key}, Errors={Errors}", + logger.LogWarning("Failed to download {Bucket}/{Key}: {Errors}", executeContext.Arguments.Bucket, executeContext.Arguments.Key, errorMessage); @@ -70,7 +70,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error downloading file from bucket"); + logger.LogError(exception, "Failed to download file from bucket"); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); throw; } @@ -85,7 +85,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error compensating downloaded file={DestinationFilePath}", compensateContext.Log.DestinationFilePath); + logger.LogError(exception, "Failed to compensate downloaded file {DestinationFilePath}", compensateContext.Log.DestinationFilePath); return Task.FromResult(compensateContext.Failed(exception)); } } diff --git a/Infrastructure/MassTransit/Activities/Files/RemoveFileFromBucketActivity.cs b/Infrastructure/MassTransit/Activities/Files/RemoveFileFromBucketActivity.cs index 6d889b5..0bf6530 100644 --- a/Infrastructure/MassTransit/Activities/Files/RemoveFileFromBucketActivity.cs +++ b/Infrastructure/MassTransit/Activities/Files/RemoveFileFromBucketActivity.cs @@ -1,4 +1,4 @@ -using MassTransit; +using MassTransit; using Microsoft.Extensions.Logging; using Musify.Application.Contracts.Infrastructure; using Musify.Domain.Entities; @@ -40,7 +40,7 @@ namespace Musify.Infrastructure.MassTransit.Activities if (!removeFile.IsSuccess) { var errorMessage = string.Join("; ", removeFile.Errors); - logger.LogWarning("Failed to remove file={Key} from bucket={Bucket}. Errors={Errors}", + logger.LogWarning("Failed to remove {Key} from bucket {Bucket}: {Errors}", executeContext.Arguments.Key, executeContext.Arguments.Bucket, errorMessage); @@ -51,7 +51,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error removing file={Key} from bucket={Bucket}", + logger.LogError(exception, "Failed to remove {Key} from bucket {Bucket}", executeContext.Arguments.Key, executeContext.Arguments.Bucket); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); diff --git a/Infrastructure/MassTransit/Activities/Files/TransferFilesToBucketActivity.cs b/Infrastructure/MassTransit/Activities/Files/TransferFilesToBucketActivity.cs index c3500c7..81b2101 100644 --- a/Infrastructure/MassTransit/Activities/Files/TransferFilesToBucketActivity.cs +++ b/Infrastructure/MassTransit/Activities/Files/TransferFilesToBucketActivity.cs @@ -1,4 +1,4 @@ -using MassTransit; +using MassTransit; using Microsoft.Extensions.Logging; using Musify.Application.Contracts.Infrastructure; using Musify.Domain.Entities; @@ -51,7 +51,7 @@ namespace Musify.Infrastructure.MassTransit.Activities if (!transferFilesResult.IsSuccess) { var errorMessage = string.Join("; ", transferFilesResult.Errors); - logger.LogWarning("Failed to transfer files from={FolderPath} to bucket={DestinationBucket}, key={DestinationKey}. Errors={Errors}", + logger.LogWarning("Failed to transfer files from {FolderPath} to {DestinationBucket}/{DestinationKey}: {Errors}", folderPath, executeContext.Arguments.DestinationBucket, destinationKey, @@ -64,7 +64,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error transferring files from={FolderPath} to bucket={DestinationBucket}", + logger.LogError(exception, "Failed to transfer files from {FolderPath} to {DestinationBucket}", folderPath, executeContext.Arguments.DestinationBucket); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); @@ -88,7 +88,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error compensating transferred files to bucket={DestinationBucket}", compensateContext.Log.DestinationBucket); + logger.LogError(exception, "Failed to compensate file transfers to {DestinationBucket}", compensateContext.Log.DestinationBucket); return compensateContext.Failed(exception); } } diff --git a/Infrastructure/MassTransit/Activities/Files/UploadFileToBucketActivity.cs b/Infrastructure/MassTransit/Activities/Files/UploadFileToBucketActivity.cs index 60585c4..32a51e6 100644 --- a/Infrastructure/MassTransit/Activities/Files/UploadFileToBucketActivity.cs +++ b/Infrastructure/MassTransit/Activities/Files/UploadFileToBucketActivity.cs @@ -1,4 +1,4 @@ -using MassTransit; +using MassTransit; using Microsoft.Extensions.Logging; using MimeMapping; using Musify.Application.Contracts.Infrastructure; @@ -46,7 +46,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Files if (!uploadResult.IsSuccess) { var errors = string.Join("; ", uploadResult.Errors); - logger.LogWarning("Failed to upload file to bucket. Bucket={Bucket}, Key={Key}, Errors={Errors}", + logger.LogWarning("Failed to upload file to bucket {Bucket}/{Route}: {Errors}", executeContext.Arguments.DestinationBucket, executeContext.Arguments.DestinationRoute, errors); @@ -60,7 +60,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Files } catch (Exception exception) { - logger.LogError(exception, "An error occurred while uploading file to bucket for process={ProcessId} at step={StepId}", processId, stepId); + logger.LogError(exception, "Failed to upload file to bucket for process {ProcessId} step {StepId}", processId, stepId); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); throw; } @@ -78,7 +78,8 @@ namespace Musify.Infrastructure.MassTransit.Activities.Files if (!uploadResult.IsSuccess) { var errors = string.Join("; ", uploadResult.Errors); - logger.LogError($"Failed to remove file from bucket during compensation. Bucket={compensateContext.Log.DestinationBucket}, Key={compensateContext.Log.DestinationKey}, Errors={errors}"); + logger.LogError("Failed to remove file from bucket during compensation. Bucket: {Bucket}, Key: {Key}, Errors: {Errors}", + compensateContext.Log.DestinationBucket, compensateContext.Log.DestinationKey, errors); return compensateContext.Failed(new Exception($"Failed to remove file from bucket during compensation. Bucket: {compensateContext.Log.DestinationBucket}, Key: {compensateContext.Log.DestinationKey}, Errors: {errors}")); } @@ -86,7 +87,7 @@ namespace Musify.Infrastructure.MassTransit.Activities.Files } catch (Exception exception) { - logger.LogError(exception, "An error occurred while compensating upload file to bucket activity for bucket={Bucket} and key={Key}", + logger.LogError(exception, "Error compensating file upload for {Bucket}/{Key}", compensateContext.Log.DestinationBucket, compensateContext.Log.DestinationKey); return compensateContext.Failed(exception); diff --git a/Infrastructure/MassTransit/Activities/Pictures/GeneratePictureWorkflowPathsActivity.cs b/Infrastructure/MassTransit/Activities/Pictures/GeneratePictureWorkflowPathsActivity.cs index f34a7bd..70d1eb8 100644 --- a/Infrastructure/MassTransit/Activities/Pictures/GeneratePictureWorkflowPathsActivity.cs +++ b/Infrastructure/MassTransit/Activities/Pictures/GeneratePictureWorkflowPathsActivity.cs @@ -47,9 +47,8 @@ namespace Musify.Infrastructure.MassTransit.Activities Directory.CreateDirectory(workingDirectory); - logger.LogDebug("Generated picture workflow paths. WorkingDirectory={WorkingDirectory}, SourceFilePath={SourceFilePath}", - workingDirectory, - sourceFilePath); + logger.LogDebug("Generated picture workflow paths in {WorkingDirectory}", + workingDirectory); await processTrackingStore.CompleteStepAsync(processId, stepId, executeContext.CancellationToken); return executeContext.CompletedWithVariables(new Dictionary @@ -64,7 +63,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error generating picture workflow paths for key={SourceKey}", + logger.LogError(exception, "Failed to generate picture workflow paths for {SourceKey}", executeContext.Arguments.SourceKey); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); throw; diff --git a/Infrastructure/MassTransit/Activities/Pictures/ResizePictureActivity.cs b/Infrastructure/MassTransit/Activities/Pictures/ResizePictureActivity.cs index 4768713..710d916 100644 --- a/Infrastructure/MassTransit/Activities/Pictures/ResizePictureActivity.cs +++ b/Infrastructure/MassTransit/Activities/Pictures/ResizePictureActivity.cs @@ -1,4 +1,4 @@ -using MassTransit; +using MassTransit; using Microsoft.Extensions.Logging; using Musify.Application.Contracts.Infrastructure; using Musify.Domain.Entities; @@ -41,7 +41,7 @@ namespace Musify.Infrastructure.MassTransit.Activities { if (!File.Exists(sourceFilePath)) { - logger.LogWarning("Source file not found at={SourceFilePath}", sourceFilePath); + logger.LogWarning("Source file not found: {SourceFilePath}", sourceFilePath); throw new FileNotFoundException($"Source file not found: {sourceFilePath}"); } @@ -56,7 +56,7 @@ namespace Musify.Infrastructure.MassTransit.Activities if (!resizedPicture.IsSuccess) { var errorMessage = string.Join("; ", resizedPicture.Errors); - logger.LogError("Failed to resize picture={SourceFilePath} to={Width}x{Height}. Errors={Errors}", + logger.LogError("Failed to resize picture {SourceFilePath} to {Width}x{Height}: {Errors}", sourceFilePath, executeContext.Arguments.Width, executeContext.Arguments.Height, @@ -71,7 +71,7 @@ namespace Musify.Infrastructure.MassTransit.Activities await using var destinationStream = File.Create(destinationFilePath); await resizedPicture.Value.CopyToAsync(destinationStream, executeContext.CancellationToken); - logger.LogDebug("Picture resized from={SourceFilePath} to={DestinationFilePath}", + logger.LogDebug("Resized picture from {SourceFilePath} to {DestinationFilePath}", sourceFilePath, destinationFilePath); @@ -80,7 +80,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error resizing picture={SourceFilePath}", sourceFilePath); + logger.LogError(exception, "Failed to resize picture {SourceFilePath}", sourceFilePath); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); throw; } @@ -95,7 +95,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error compensating resized file={DestinationFilePath}", compensateContext.Log.DestinationFilePath); + logger.LogError(exception, "Failed to compensate resized file {DestinationFilePath}", compensateContext.Log.DestinationFilePath); return Task.FromResult(compensateContext.Failed(exception)); } } diff --git a/Infrastructure/MassTransit/Activities/Pictures/UpdatePlayListPictureActivity.cs b/Infrastructure/MassTransit/Activities/Pictures/UpdatePlayListPictureActivity.cs index 2901432..37e729c 100644 --- a/Infrastructure/MassTransit/Activities/Pictures/UpdatePlayListPictureActivity.cs +++ b/Infrastructure/MassTransit/Activities/Pictures/UpdatePlayListPictureActivity.cs @@ -1,4 +1,4 @@ -using MassTransit; +using MassTransit; using Microsoft.Extensions.Logging; using Musify.Application.Contracts.Infrastructure; using Musify.Domain.Entities; @@ -46,7 +46,7 @@ namespace Musify.Infrastructure.MassTransit.Activities if (playList is null) { - logger.LogWarning("PlayList with id={PlayListId} not found", + logger.LogWarning("Playlist {PlayListId} not found", executeContext.Arguments.PlayListId); throw new InvalidOperationException($"PlayList with id {executeContext.Arguments.PlayListId} not found"); } @@ -66,7 +66,7 @@ namespace Musify.Infrastructure.MassTransit.Activities database.PlayLists.Update(playList); await database.SaveChangesAsync(executeContext.CancellationToken); - logger.LogInformation("Updated PlayList={PlayListId} pictures", + logger.LogInformation("Updated playlist {PlayListId} pictures", executeContext.Arguments.PlayListId); await processTrackingStore.CompleteStepAsync(processId, stepId, executeContext.CancellationToken); @@ -74,7 +74,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error updating PlayList={PlayListId} pictures", + logger.LogError(exception, "Failed to update playlist {PlayListId} pictures", executeContext.Arguments.PlayListId); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); throw; @@ -106,7 +106,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error compensating PlayList={PlayListId} pictures", compensateContext.Log.PlayListId); + logger.LogError(exception, "Failed to compensate playlist {PlayListId} pictures", compensateContext.Log.PlayListId); return compensateContext.Failed(exception); } } diff --git a/Infrastructure/MassTransit/Activities/Pictures/UpdateTrackPictureActivity.cs b/Infrastructure/MassTransit/Activities/Pictures/UpdateTrackPictureActivity.cs index 0ec8e1a..7b2463a 100644 --- a/Infrastructure/MassTransit/Activities/Pictures/UpdateTrackPictureActivity.cs +++ b/Infrastructure/MassTransit/Activities/Pictures/UpdateTrackPictureActivity.cs @@ -1,4 +1,4 @@ -using MassTransit; +using MassTransit; using Microsoft.Extensions.Logging; using Musify.Application.Contracts.Infrastructure; using Musify.Domain.Entities; @@ -46,7 +46,7 @@ namespace Musify.Infrastructure.MassTransit.Activities if (track is null) { - logger.LogWarning("Track with id={TrackId} not found", + logger.LogWarning("Track {TrackId} not found", executeContext.Arguments.TrackId); throw new InvalidOperationException($"Track with id {executeContext.Arguments.TrackId} not found"); } @@ -66,7 +66,7 @@ namespace Musify.Infrastructure.MassTransit.Activities database.Tracks.Update(track); await database.SaveChangesAsync(executeContext.CancellationToken); - logger.LogInformation("Updated Track={TrackId} pictures", + logger.LogInformation("Updated track {TrackId} pictures", executeContext.Arguments.TrackId); await processTrackingStore.CompleteStepAsync(processId, stepId, executeContext.CancellationToken); @@ -74,7 +74,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error updating Track={TrackId} pictures", + logger.LogError(exception, "Failed to update track {TrackId} pictures", executeContext.Arguments.TrackId); await processTrackingStore.FailStepAsync(processId, stepId, exception.Message, executeContext.CancellationToken); throw; @@ -106,7 +106,7 @@ namespace Musify.Infrastructure.MassTransit.Activities } catch (Exception exception) { - logger.LogError(exception, "Error compensating Track={TrackId} pictures", compensateContext.Log.TrackId); + logger.LogError(exception, "Failed to compensate track {TrackId} pictures", compensateContext.Log.TrackId); return compensateContext.Failed(exception); } } diff --git a/Infrastructure/Pictures/PictureHandler.cs b/Infrastructure/Pictures/PictureHandler.cs index 4bbf97c..b1ab220 100644 --- a/Infrastructure/Pictures/PictureHandler.cs +++ b/Infrastructure/Pictures/PictureHandler.cs @@ -1,4 +1,4 @@ -using Ardalis.Result; +using Ardalis.Result; using Microsoft.Extensions.Logging; using Musify.Application.Contracts.Infrastructure; using SixLabors.ImageSharp; @@ -13,7 +13,7 @@ namespace Musify.Infrastructure.Pictures { try { - logger.LogDebug("Resizing picture to={Width}x{Height}", width, height); + logger.LogDebug("Resizing picture to {Width}x{Height}", width, height); if (pictureStream.CanSeek && pictureStream.Position > 0) pictureStream.Position = 0; @@ -31,13 +31,13 @@ namespace Musify.Infrastructure.Pictures memoryStream.Position = 0; - logger.LogDebug("Picture resized successfully. OutputLength={Length}", memoryStream.Length); + logger.LogDebug("Picture resized to {Width}x{Height}, length: {Length}", width, height, memoryStream.Length); return Result.Success(memoryStream); } catch (Exception exception) { - logger.LogError(exception, "An error occurred while resizing the picture to={Width}x{Height}.", width, height); - return Result.Error("An error occurred while resizing the picture."); + logger.LogError(exception, "Failed to resize picture to {Width}x{Height}", width, height); + return Result.Error("Failed to resize picture"); } } } diff --git a/Infrastructure/Storage/StorageHandler.cs b/Infrastructure/Storage/StorageHandler.cs index 3293281..4a92921 100644 --- a/Infrastructure/Storage/StorageHandler.cs +++ b/Infrastructure/Storage/StorageHandler.cs @@ -1,4 +1,4 @@ -using Amazon.S3; +using Amazon.S3; using Amazon.S3.Model; using Amazon.S3.Transfer; using Ardalis.Result; @@ -21,19 +21,19 @@ namespace Musify.Infrastructure.Storage Key = key, }; - logger.LogDebug("Getting file from S3. Bucket={Bucket}, Key={Key}", bucket, key); + try { var response = await amazonS3.GetObjectAsync(request, cancellationToken); - logger.LogDebug("Successfully got file from S3 with bucket={Bucket} and key={Key}", bucket, key); + logger.LogDebug("Retrieved file from S3 {Bucket}/{Key}", bucket, key); return Result.Success(response.ResponseStream); } catch (Exception exception) { - logger.LogWarning(exception, "Failed to get file from S3. Bucket={Bucket}, Key={Key}", bucket, key); - return Result.NotFound($"File not found in S3 with bucket: {bucket} and key: {key}"); + logger.LogWarning(exception, "Failed to get file from S3 {Bucket}/{Key}", bucket, key); + return Result.NotFound($"File {bucket}/{key} not found"); } } @@ -47,7 +47,7 @@ namespace Musify.Infrastructure.Storage Protocol = storageClientConfiguration.UseHttp ? Protocol.HTTP : Protocol.HTTPS }; - logger.LogDebug("Getting pre-signed URL from S3. Bucket={BucketName}, Key={Key}, Expires={Expires}", bucket, key, request.Expires); + logger.LogDebug("Generating pre-signed URL for {Bucket}/{Key}", bucket, key); var url = await amazonS3.GetPreSignedURLAsync(request); return url; @@ -61,7 +61,7 @@ namespace Musify.Infrastructure.Storage Key = key, }; - logger.LogDebug("Removing file from S3. Bucket={Bucket}, Key={Key}", bucket, key); + logger.LogDebug("Removing file from S3 {Bucket}/{Key}", bucket, key); var response = await amazonS3.DeleteObjectAsync(request, cancellationToken); return Result.NoContent(); @@ -96,18 +96,18 @@ namespace Musify.Infrastructure.Storage await trasnsferUtility.UploadAsync(filePath, bucket, key, cancellationToken); upload.State = UploadState.Successful; successCount++; - logger.LogDebug("Transferred file to S3. Bucket={Bucket}, Key={Key}", bucket, key); + logger.LogDebug("Transferred file to S3 {Bucket}/{Key}", bucket, key); } catch (Exception exception) { failedCount++; upload.State = UploadState.Failed; - logger.LogError(exception, "Failed to transfer file to S3. Bucket={Bucket}, key={key}", bucket, key); + logger.LogError(exception, "Failed to transfer file to S3 {Bucket}/{Key}", bucket, key); } } await database.SaveChangesAsync(cancellationToken); - logger.LogInformation("TransferFiles completed. Bucket={Bucket}, Route={Route}, Success={SuccessCount}, Failed={FailedCount}", bucket, route, successCount, failedCount); + logger.LogInformation("File transfer completed to {Bucket}/{Route}. Success: {SuccessCount}, Failed: {FailedCount}", bucket, route, successCount, failedCount); return Result.Success(); } @@ -122,8 +122,8 @@ namespace Musify.Infrastructure.Storage } catch (Exception exception) { - logger.LogError(exception, "Failed to upload file to S3 with bucket={Bucket} and key={Key}", bucket, key); - return Result.Error($"Failed to upload file to S3 with bucket: {bucket} and key: {key}"); + logger.LogError(exception, "Failed to upload file to S3 {Bucket}/{Key}", bucket, key); + return Result.Error($"Failed to upload to {bucket}/{key}"); } } @@ -149,18 +149,18 @@ namespace Musify.Infrastructure.Storage try { var response = await amazonS3.PutObjectAsync(request, cancellationToken); - logger.LogDebug("Uploaded file to S3. Bucket?={Bucket}, Key={Key}", bucket, key); + logger.LogDebug("Uploaded file to S3 {Bucket}/{Key}", bucket, key); } catch (Exception exception) { - logger.LogError(exception, "Failed to upload file to S3 with bucket={Bucket} and key={Key}", bucket, key); + logger.LogError(exception, "Failed to upload file to S3 {Bucket}/{Key}", bucket, key); upload.State = UploadState.Failed; - return Result.Error($"Failed to upload file to S3 with bucket: {bucket} and key: {key}"); + return Result.Error($"Failed to upload to {bucket}/{key}"); } upload.State = UploadState.Successful; await database.SaveChangesAsync(cancellationToken); - logger.LogDebug("Saved upload record to database. Bucket={Bucket}, Key={Key}", bucket, key); + logger.LogDebug("Saved upload record for {Bucket}/{Key}", bucket, key); return Result.Success(key); } @@ -179,15 +179,15 @@ namespace Musify.Infrastructure.Storage try { var response = await amazonS3.CopyObjectAsync(request, cancellationToken); - logger.LogInformation("Successfully copied file from S3 with bucket={SourceBucket} and key={SourceKey} to bucket={DestinationBucket} and key={DestinationKey}", + logger.LogInformation("Copied file from {SourceBucket}/{SourceKey} to {DestinationBucket}/{DestinationKey}", sourceBucket, sourceKey, destinationBucket, destinationKey); return Result.Success(); } catch (Exception exception) { - logger.LogError(exception, "Failed to copy file from S3 with bucket={SourceBucket} and key={SourceKey} to bucket={DestinationBucket} and key={DestinationKey}", + logger.LogError(exception, "Failed to copy file from {SourceBucket}/{SourceKey} to {DestinationBucket}/{DestinationKey}", sourceBucket, sourceKey, destinationBucket, destinationKey); - return Result.Error($"Failed to copy file from S3 with bucket: {sourceBucket} and key: {sourceKey} to bucket: {destinationBucket} and key: {destinationKey}"); + return Result.Error($"Failed to copy from {sourceBucket}/{sourceKey} to {destinationBucket}/{destinationKey}"); } } }