SLING-10066 - Improve logging
diff --git a/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeper.java b/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeper.java
index 30e761b..3d87eb2 100644
--- a/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeper.java
+++ b/src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeper.java
@@ -28,6 +28,7 @@
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
@@ -140,8 +141,9 @@
      * once, thanks to the order in which the content updates are applied.
      */
     public void importPackage(PackageMessage pkgMsg, long offset, long createdTime) throws DistributionException {
-        log.info("Importing distribution package {} of type {} at offset {}", 
-                pkgMsg.getPkgId(), pkgMsg.getReqType(), offset);
+        String firstPath = getFirstPath(pkgMsg);
+        log.info("Importing distribution package {} of type {} at offset {} first path {} url {}", 
+                pkgMsg.getPkgId(), pkgMsg.getReqType(), offset, firstPath, pkgMsg.getPkgBinaryRef());
         addPackageMDC(pkgMsg);
         try (Timer.Context context = distributionMetricsService.getImportedPackageDuration().time();
                 ResourceResolver importerResolver = getServiceResolver(SUBSERVICE_IMPORTER)) {
@@ -191,16 +193,22 @@
 
         String pubAgentName = pkgMsg.getPubAgentName();
         int retries = packageRetries.get(pubAgentName);
-        if (errorQueueEnabled && retries >= config.getMaxRetries()) {
-            log.warn("Failed to import distribution package {} at offset {} after {} retries, removing the package. Url {}", 
-                    pkgMsg.getPkgId(), offset, retries, pkgMsg.getPkgBinaryRef());
+        boolean giveUp = errorQueueEnabled && retries >= config.getMaxRetries();
+        String retriesSt = errorQueueEnabled ? Integer.toString(config.getMaxRetries()) : "infinite";
+        String action = giveUp ? "removing the package" : "retrying";
+        String firstPath = getFirstPath(pkgMsg);
+        String msg = format("Error processing distribution package %s at offset %d first path %s. Retry attempts %s/%s. Url: %s, %s, Message: %s", pkgMsg.getPkgId(), offset, firstPath, retries, retriesSt, pkgMsg.getPkgBinaryRef(), action, e.getMessage());
+        try {
+            LogMessage logMessage = getLogMessage(pubAgentName, msg, e);
+            logSender.accept(logMessage);
+        } catch (Exception e2) {
+            log.warn("Error sending log message", e2);
+        }; 
+        if (giveUp) {
+            log.warn(msg, e);
             removeFailedPackage(pkgMsg, offset);
         } else {
             packageRetries.increase(pubAgentName);
-            String retriesSt = errorQueueEnabled ? Integer.toString(config.getMaxRetries()) : "infinite";
-            String msg = format("Error processing distribution package %s. Retry attempts %s/%s. Url: {}, Message: %s", pkgMsg.getPkgId(), retries, retriesSt, pkgMsg.getPkgBinaryRef(), e.getMessage());
-            LogMessage logMessage = getLogMessage(pubAgentName, msg, e);
-            logSender.accept(logMessage);
             throw new DistributionException(msg, e);
         }
     }
@@ -339,6 +347,11 @@
     private ResourceResolver getServiceResolver(String subService) throws LoginException {
         return resolverFactory.getServiceResourceResolver(singletonMap(SUBSERVICE, subService));
     }
+    
+    private String getFirstPath(PackageMessage pkg) {
+        Iterator<String> it = pkg.getPaths().iterator();
+        return it.hasNext() ? it.next() : "";
+    }
 
     static void retryDelay() {
         try {
diff --git a/src/main/java/org/apache/sling/distribution/journal/bookkeeper/PackageHandler.java b/src/main/java/org/apache/sling/distribution/journal/bookkeeper/PackageHandler.java
index 2847468..7ee64f9 100644
--- a/src/main/java/org/apache/sling/distribution/journal/bookkeeper/PackageHandler.java
+++ b/src/main/java/org/apache/sling/distribution/journal/bookkeeper/PackageHandler.java
@@ -71,7 +71,7 @@
 
     private void installAddPackage(ResourceResolver resolver, PackageMessage pkgMsg)
             throws DistributionException {
-        LOG.info("Importing paths {}",pkgMsg.getPaths());
+        LOG.debug("Importing paths {}",pkgMsg.getPaths());
         InputStream pkgStream = null;
         try {
             pkgStream = stream(resolver, pkgMsg, binaryStore);
diff --git a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
index 83a7dcf..84aa594 100644
--- a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
+++ b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
@@ -27,7 +27,6 @@
 import static org.apache.sling.distribution.journal.shared.DistributionMetricsService.timed;
 
 import java.io.Closeable;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Dictionary;
 import java.util.HashMap;
@@ -275,7 +274,8 @@
             );
             distributionMetricsService.getExportedPackageSize().update(pkg.getPkgLength());
             distributionMetricsService.getAcceptedRequests().mark();
-            String msg = String.format("Distribution request accepted with type %s paths %s ", request.getRequestType(), Arrays.toString(request.getPaths()));
+            String firstPath = pkg.getPaths().iterator().next();
+            String msg = String.format("Distribution request accepted with type %s paths %s, url %s", request.getRequestType(), firstPath, pkg.getPkgBinaryRef());
             log.info(msg);
             return new SimpleDistributionResponse(ACCEPTED, msg);
         } catch (Throwable e) {