diff --git a/core/modules/dblog/dblog.admin.inc b/core/modules/dblog/dblog.admin.inc
index fd056c2..6aba375 100644
--- a/core/modules/dblog/dblog.admin.inc
+++ b/core/modules/dblog/dblog.admin.inc
@@ -274,16 +274,16 @@ function dblog_filters() {
 }
 
 /**
- * Returns HTML for a log message.
+ * Preprocesses variables for a database log message.
  *
- * @param array $variables
+ * @param $variables
  *   An associative array containing:
  *   - event: An object with at least the message and variables properties.
  *   - link: (optional) Format message as link, event->wid is required.
  *
  * @ingroup themeable
  */
-function theme_dblog_message($variables) {
+function template_preprocess_dblog_message(&$variables) {
   $output = '';
   $event = $variables['event'];
   // Check for required properties.
@@ -297,12 +297,12 @@ function theme_dblog_message($variables) {
       $output = t($event->message, unserialize($event->variables));
     }
     if ($variables['link'] && isset($event->wid)) {
-      // Truncate message to 56 chars.
-      $output = truncate_utf8(filter_xss($output, array()), 56, TRUE, TRUE);
-      $output = l($output, 'admin/reports/event/' . $event->wid, array('html' => TRUE));
+      // Truncate link_text to 56 chars of message.
+      $variables['link_text'] = truncate_utf8(filter_xss($output, array()), 56, TRUE, TRUE);
+      $variables['link_url'] = url('admin/reports/event/' . $event->wid);
     }
   }
-  return $output;
+  $variables['message'] = $output;
 }
 
 /**
diff --git a/core/modules/dblog/dblog.module b/core/modules/dblog/dblog.module
index a0afcd4..9f21d95 100644
--- a/core/modules/dblog/dblog.module
+++ b/core/modules/dblog/dblog.module
@@ -193,6 +193,7 @@ function dblog_theme() {
     'dblog_message' => array(
       'variables' => array('event' => NULL, 'link' => FALSE),
       'file' => 'dblog.admin.inc',
+      'template' => 'dblog-message',
     ),
   );
 }
diff --git a/core/modules/dblog/templates/dblog-message.html.twig b/core/modules/dblog/templates/dblog-message.html.twig
new file mode 100644
index 0000000..f32a02d
--- /dev/null
+++ b/core/modules/dblog/templates/dblog-message.html.twig
@@ -0,0 +1,20 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a database log message.
+ *
+ * Available variables:
+ * - message: The database log message, either as the full message text, or the
+ *   message text truncated to 56 characters and linked to the message details.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_dblog_message()
+ *
+ * @ingroup themeable
+ */
+#}
+{% if link_url and link_text %}
+  <a href="{{ link_url }}">{{ link_text }}</a>
+{% else %}
+  {{ message }}
+{% endif %}
\ No newline at end of file
