diff --git a/xtrn/dd_upload_processor/ddup.js b/xtrn/dd_upload_processor/ddup.js
index 2b43029646d1232f7fbd393425c13c3ea65bb48b..80e36e92cf1465914c272d32c6374a0382d5dca2 100644
--- a/xtrn/dd_upload_processor/ddup.js
+++ b/xtrn/dd_upload_processor/ddup.js
@@ -26,6 +26,9 @@
  *                              if available, to extract archives.
  * 2023-08-07 Eric Oulashin     Version 1.05
  *                              Internal refactor of how the configuration files are read
+ * 2023-08-08 Eric Oulashin     Version 1.06
+ *                              When a virus scan fails, the scan output is written to the system
+ *                              log (as a warning) rather than to the user's console session.
  */
 
 /* Command-line arguments:
@@ -53,8 +56,8 @@ gStartupPath = backslash(gStartupPath.replace(/[\/\\][^\/\\]*$/,''));
 load(gStartupPath + "ddup_cleanup.js");
 
 // Version information
-var gDDUPVersion = "1.05";
-var gDDUPVerDate = "2023-08-07";
+var gDDUPVersion = "1.06";
+var gDDUPVerDate = "2023-08-08";
 
 // Store whether or not this is running in Windows
 var gRunningInWindows = /^WIN/.test(system.platform.toUpperCase());
@@ -325,12 +328,10 @@ function processFile(pFilename)
 						else
 						{
 							console.print(gFailStrWithNewline);
-							console.print("\1n\1y\1hVirus scan failed.(1)  Scan output:\1n\r\n");
+							console.print("\1n\1y\1hVirus scan failed.\1n\r\n");
+							log(LOG_WARNING, format("File (%s) uploaded by %s failed virus scan:", pFilename, user.alias));
 							for (var index = 0; index < retObj.cmdOutput.length; ++index)
-							{
-								console.print(retObj.cmdOutput[index]);
-								console.crlf();
-							}
+								log(LOG_WARNING, retObj.cmdOutput[index]);
 						}
 					}
 					else
@@ -357,12 +358,10 @@ function processFile(pFilename)
 				else
 				{
 					console.print(gFailStrWithNewline);
-					console.print("\1n\1y\1hVirus scan failed.(2)  Scan output:\1n\r\n");
+					console.print("\1n\1y\1hVirus scan failed.\1n\r\n");
+					log(LOG_WARNING, format("File (%s) uploaded by %s failed virus scan:", pFilename, user.alias));
 					for (var index = 0; index < retObj.cmdOutput.length; ++index)
-					{
-						console.print(retObj.cmdOutput[index]);
-						console.crlf();
-					}
+						log(LOG_WARNING, retObj.cmdOutput[index]);
 				}
 			}
 		}
@@ -381,12 +380,10 @@ function processFile(pFilename)
 		else
 		{
 			console.print(gFailStrWithNewline);
-			console.print("\1n\1y\1hVirus scan failed.(3)  Scan output:\1n\r\n");
+			console.print("\1n\1y\1hVirus scan failed.\1n\r\n");
+			log(LOG_WARNING, format("File (%s) uploaded by %s failed virus scan:", pFilename, user.alias));
 			for (var index = 0; index < retObj.cmdOutput.length; ++index)
-			{
-				console.print(retObj.cmdOutput[index]);
-				console.crlf();
-			}
+				log(LOG_WARNING, retObj.cmdOutput[index]);
 		}
 	}
 
diff --git a/xtrn/dd_upload_processor/readme.txt b/xtrn/dd_upload_processor/readme.txt
index d1454d25eee1cc6360b612adf5e9423c590dbc1f..7ee5137c79f3f9154f29378e295b66e734cbbda6 100644
--- a/xtrn/dd_upload_processor/readme.txt
+++ b/xtrn/dd_upload_processor/readme.txt
@@ -1,6 +1,6 @@
                    Digital Distortion Upload Processor
-                              Version 1.05
-                        Release date: 2023-08-07
+                              Version 1.06
+                        Release date: 2023-08-08
 
                                   by
 
diff --git a/xtrn/dd_upload_processor/version_history.txt b/xtrn/dd_upload_processor/version_history.txt
index c7a9fa699b85daae511f5389035a5e9deaec69a7..3a94da297a485da7a69b134140eb7833026594a0 100644
--- a/xtrn/dd_upload_processor/version_history.txt
+++ b/xtrn/dd_upload_processor/version_history.txt
@@ -2,6 +2,9 @@ Revision History for Digital Distortion Upload Processor
 ========================================================
 Version  Date         Description
 -------  ----         -----------
+1.06     2023-08-08   When a virus scan fails, the scan output is written to the
+                      system log (as a warning) rather than to the user's
+                      console session.
 1.05     2023-08-07   Internal refactor of how the configuration files are
                       read. Behavior is the same.
 1.04     2023-08-06   Now uses Synchronet's built-in archiver (added in