diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/AbstractCloudIOManager.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/AbstractCloudIOManager.java
index 4dfcd5f..35b0744 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/AbstractCloudIOManager.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/AbstractCloudIOManager.java
@@ -123,7 +123,7 @@
             partitionPaths.add(resolve(STORAGE_ROOT_DIR_NAME + File.separator + partitionDir));
         }
 
-        LOGGER.warn("Initializing cloud manager with ({}) storage partitions: {}", partitions.size(), partitions);
+        LOGGER.info("Initializing cloud manager with ({}) storage partitions: {}", partitions.size(), partitions);
 
         if (cleanup) {
             deleteUnkeptPartitionDirs(currentOnDiskPartitions);
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/LazyCloudIOManager.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/LazyCloudIOManager.java
index ad2392b..49b919c 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/LazyCloudIOManager.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/LazyCloudIOManager.java
@@ -147,12 +147,12 @@
             boolean metadataNode, int metadataPartition) throws HyracksDataException {
         String partitionDir = PARTITION_DIR_PREFIX + metadataPartition;
         if (metadataNode && uncachedFiles.stream().anyMatch(f -> f.getRelativePath().contains(partitionDir))) {
-            LOGGER.debug("Downloading metadata partition {}, Current uncached files: {}", metadataPartition,
+            LOGGER.info("Downloading metadata partition {}, Current uncached files: {}", metadataPartition,
                     uncachedFiles);
             FileReference metadataDir = resolve(STORAGE_ROOT_DIR_NAME + File.separator + partitionDir);
             downloader.downloadDirectories(Collections.singleton(metadataDir));
             uncachedFiles.removeIf(f -> f.getRelativePath().contains(partitionDir));
-            LOGGER.debug("Finished downloading metadata partition. Current uncached files: {}", uncachedFiles);
+            LOGGER.info("Finished downloading metadata partition. Current uncached files: {}", uncachedFiles);
         }
     }
 
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/lazy/ParallelCacher.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/lazy/ParallelCacher.java
index a087ef1..56619c8 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/lazy/ParallelCacher.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/lazy/ParallelCacher.java
@@ -158,7 +158,7 @@
     @Override
     public boolean remove(Collection<FileReference> deletedFiles) {
         if (!deletedFiles.isEmpty()) {
-            LOGGER.debug("Deleting {}", deletedFiles);
+            LOGGER.debug("Delete {}", deletedFiles);
         }
 
         for (FileReference fileReference : deletedFiles) {
@@ -170,7 +170,7 @@
 
     @Override
     public boolean remove(FileReference fileReference) {
-        LOGGER.debug("Deleting {}", fileReference);
+        LOGGER.debug("Delete {}", fileReference);
         doRemove(fileReference);
         return isEmpty();
     }
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/util/CloudFileUtil.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/util/CloudFileUtil.java
index 67ce2c8..dcc1b93 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/util/CloudFileUtil.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/util/CloudFileUtil.java
@@ -49,7 +49,7 @@
         // First get the set of local files
         Set<FileReference> localFiles = ioManager.list(partitionPath);
         Iterator<FileReference> localFilesIter = localFiles.iterator();
-        LOGGER.debug("Cleaning partition {}.", partitionPath.getRelativePath());
+        LOGGER.info("Cleaning partition {}.", partitionPath.getRelativePath());
 
         // Reconcile local files and cloud files
         while (localFilesIter.hasNext()) {
@@ -82,9 +82,7 @@
     }
 
     private static void logDeleteFile(FileReference fileReference) {
-        if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("Deleting {} from the local cache as {} doesn't exist in the cloud", fileReference,
-                    fileReference.getRelativePath());
-        }
+        LOGGER.info("Deleting {} from the local cache as {} doesn't exist in the cloud", fileReference,
+                fileReference.getRelativePath());
     }
 }
