diff --git a/core/modules/dblog/dblog.admin.inc b/core/modules/dblog/dblog.admin.inc
index fd056c2..9abc7e9 100644
--- a/core/modules/dblog/dblog.admin.inc
+++ b/core/modules/dblog/dblog.admin.inc
@@ -274,7 +274,7 @@ function dblog_filters() {
 }
 
 /**
- * Returns HTML for a log message.
+ * Preprocesses variables for a database log message.
  *
  * @param array $variables
  *   An associative array containing:
@@ -283,7 +283,7 @@ function dblog_filters() {
  *
  * @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 the message.
+      $variables['text'] = truncate_utf8(filter_xss($output, array()), 56, TRUE, TRUE);
+      $variables['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..8d524f2
--- /dev/null
+++ b/core/modules/dblog/templates/dblog-message.html.twig
@@ -0,0 +1,21 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a database log message.
+ *
+ * Available variables:
+ * - url: The URL for a link to the message details.
+ * - text: The database log message text truncated to 56 characters.
+ * - message: The database log message, as the full message text.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_dblog_message()
+ *
+ * @ingroup themeable
+ */
+#}
+{% if url and text %}
+  <a href="{{ url }}">{{ text }}</a>
+{% else %}
+  {{ message }}
+{% endif %}
