Index: /trunk/psModules/src/config/pmConfig.c
===================================================================
--- /trunk/psModules/src/config/pmConfig.c	(revision 16230)
+++ /trunk/psModules/src/config/pmConfig.c	(revision 16231)
@@ -463,4 +463,6 @@
         }
 
+	// set the log file from the config files or -log argument
+	psString logDest = NULL;
         argNum = psArgumentGet(*argc, argv, "-log");
         if (argNum > 0) {
@@ -470,17 +472,27 @@
                           "--- ignored.\n");
             } else {
-                config->logFD = psMessageDestination(argv[argNum]);
-                psArgumentRemove(argNum, argc, argv);
+		logDest = pmConfigConvertFilename (argv[argNum], config, true);
+		psArgumentRemove(argNum, argc, argv);
             }
         } else {
             // Set logging destination
-            psString logDest = psMetadataLookupStr(&mdok, config->site, "LOGDEST");
-            if (mdok && logDest && strlen(logDest) > 0) {
-                config->logFD = psMessageDestination(logDest);
-            }
-        }
+            psString tmpName = psMetadataLookupStr(&mdok, config->site, "LOGDEST");
+            if (mdok && tmpName && strlen(tmpName) > 0) {
+		logDest = pmConfigConvertFilename (tmpName, config, true);
+            }
+        }
+	if (logDest) {
+	    if (strcasecmp (logDest, "stdout") && strcasecmp (logDest, "stderr")) {
+		// psMessageDestination takes a target of the form file:location
+		// XXX should we modify psMessageDestination to recognize a plain file?
+		psStringPrepend (&logDest, "file:");
+	    }
+	    config->logFD = psMessageDestination(logDest);
+	}
         if (!psLogSetDestination(config->logFD)) {
-            psWarning("Unable to set log destination to file number %d --- ignored", config->logFD);
-        }
+            psWarning("Unable to set log destination to file number %d (%s) --- ignored", config->logFD, logDest);
+	    // XXX make this a fatal error?
+        }
+	psFree (logDest);
 
         // Set trace levels
@@ -510,4 +522,5 @@
 
         // Set trace destinations
+	psString traceDest = NULL;
         argNum = psArgumentGet(*argc, argv, "-tracedest");
         if (argNum > 0) {
@@ -517,17 +530,26 @@
                           "--- ignored.\n");
             } else {
-                config->traceFD = psMessageDestination(argv[argNum]);
+		traceDest = pmConfigConvertFilename (argv[argNum], config, true);
                 psArgumentRemove(argNum, argc, argv);
             }
         } else {
-            psString traceDest = psMetadataLookupStr(&mdok, config->site, "TRACEDEST");
-            if (mdok && traceDest && strlen(traceDest) > 0) {
+            psString tmpName = psMetadataLookupStr(&mdok, config->site, "TRACEDEST");
+            if (mdok && tmpName && strlen(tmpName) > 0) {
+		traceDest = pmConfigConvertFilename (tmpName, config, true);
                 psTrace("psModules.config", 7, "Setting trace destination to %s\n", traceDest);
-                config->traceFD = psMessageDestination(traceDest);
-            }
-        }
+            }
+        }
+	if (traceDest) {
+	    if (strcasecmp (traceDest, "stdout") && strcasecmp (traceDest, "stderr")) {
+		// psMessageDestination takes a target of the form file:location
+		// XXX should we modify psMessageDestination to recognize a plain file?
+		psStringPrepend (&traceDest, "file:");
+	    }
+	    config->traceFD = psMessageDestination(traceDest);
+	}
         if (!psTraceSetDestination(config->traceFD)) {
-            psWarning("Unable to set log destination to file %d\n", config->traceFD);
-        }
+            psWarning("Unable to set trace destination to file number %d (%s)\n", config->traceFD, traceDest);
+        }
+	psFree (traceDest);
 
         // Allow command line options to override defaults for logging.
