Index: modules/syslog/syslog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/syslog/syslog.module,v
retrieving revision 1.22
diff -u -p -r1.22 syslog.module
--- modules/syslog/syslog.module	13 Apr 2009 08:49:01 -0000	1.22
+++ modules/syslog/syslog.module	18 Apr 2009 19:13:38 -0000
@@ -90,15 +90,31 @@ function syslog_theme() {
 function theme_syslog_format($entry) {
   global $base_url;
 
-  $message  = $base_url;
-  $message .= '|' . $entry['timestamp'];
-  $message .= '|' . $entry['type'];
-  $message .= '|' . $entry['ip'];
-  $message .= '|' . $entry['request_uri'];
-  $message .= '|' . $entry['referer'];
-  $message .= '|' . $entry['user']->uid;
-  $message .= '|' . strip_tags($entry['link']);
-  $message .= '|' . strip_tags(is_null($entry['variables']) ? $entry['message'] : strtr($entry['message'], $entry['variables']));
+  // Convert HTML link to "Text: URI"
+  if (!empty($entry['link'])) {
+    if (preg_match('#^<a[^>]*href="([^"]+)"[^>]*>(.*)</a>#isU', $entry['link'], $matches)) {
+      $entry['link'] = str_replace('"', '\'', decode_entities(strip_tags($matches[2]))) .': '. $matches[1];
+    }
+    else {
+      $entry['link'] = '';
+    }
+  }
+
+  $message = array(
+    $base_url,
+    $entry['timestamp'],
+    $entry['type'],
+    $entry['ip'],
+    $entry['request_uri'],
+    $entry['referer'],  
+    $entry['user']->uid,
+    $entry['link'],
+  );
+
+  // Double-quote, and separate fields with a single whitespace.
+  // The message doesn't need to quoting since it's the last field.
+  $message = '"' . implode('" "', $message) . '"';
+  $message .= ' ' . decode_entities(strip_tags(is_null($entry['variables']) ? $entry['message'] : strtr($entry['message'], $entry['variables'])));
 
   return $message;
 }
