diff --git a/core/modules/dblog/dblog.admin.inc b/core/modules/dblog/dblog.admin.inc
index 9a5ef3b..fe53f25 100644
--- a/core/modules/dblog/dblog.admin.inc
+++ b/core/modules/dblog/dblog.admin.inc
@@ -108,114 +108,3 @@ function dblog_filters() {
 
   return $filters;
 }
-
-/**
- * Form constructor for the database logging filter form.
- *
- * @see dblog_filter_form_validate()
- * @see dblog_filter_form_submit()
- * @see dblog_overview()
- *
- * @ingroup forms
- */
-function dblog_filter_form($form) {
-  $filters = dblog_filters();
-
-  $form['filters'] = array(
-    '#type' => 'details',
-    '#title' => t('Filter log messages'),
-    '#collapsed' => empty($_SESSION['dblog_overview_filter']),
-  );
-  foreach ($filters as $key => $filter) {
-    $form['filters']['status'][$key] = array(
-      '#title' => $filter['title'],
-      '#type' => 'select',
-      '#multiple' => TRUE,
-      '#size' => 8,
-      '#options' => $filter['options'],
-    );
-    if (!empty($_SESSION['dblog_overview_filter'][$key])) {
-      $form['filters']['status'][$key]['#default_value'] = $_SESSION['dblog_overview_filter'][$key];
-    }
-  }
-
-  $form['filters']['actions'] = array(
-    '#type' => 'actions',
-    '#attributes' => array('class' => array('container-inline')),
-  );
-  $form['filters']['actions']['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Filter'),
-  );
-  if (!empty($_SESSION['dblog_overview_filter'])) {
-    $form['filters']['actions']['reset'] = array(
-      '#type' => 'submit',
-      '#value' => t('Reset')
-    );
-  }
-  return $form;
-}
-
-/**
- * Form validation handler for dblog_filter_form().
- *
- * @see dblog_filter_form_submit()
- */
-function dblog_filter_form_validate($form, &$form_state) {
-  if ($form_state['values']['op'] == t('Filter') && empty($form_state['values']['type']) && empty($form_state['values']['severity'])) {
-    form_set_error('type', t('You must select something to filter by.'));
-  }
-}
-
-/**
- * Form submission handler for dblog_filter_form().
- *
- * @see dblog_filter_form_validate()
- */
-function dblog_filter_form_submit($form, &$form_state) {
-  $op = $form_state['values']['op'];
-  $filters = dblog_filters();
-  switch ($op) {
-    case t('Filter'):
-      foreach ($filters as $name => $filter) {
-        if (isset($form_state['values'][$name])) {
-          $_SESSION['dblog_overview_filter'][$name] = $form_state['values'][$name];
-        }
-      }
-      break;
-    case t('Reset'):
-      $_SESSION['dblog_overview_filter'] = array();
-      break;
-  }
-  return 'admin/reports/dblog';
-}
-
-/**
- * Form constructor for the form that clears out the log.
- *
- * @see dblog_clear_log_submit()
- * @ingroup forms
- */
-function dblog_clear_log_form($form) {
-  $form['dblog_clear'] = array(
-    '#type' => 'details',
-    '#title' => t('Clear log messages'),
-    '#description' => t('This will permanently remove the log messages from the database.'),
-    '#collapsed' => TRUE,
-  );
-  $form['dblog_clear']['clear'] = array(
-    '#type' => 'submit',
-    '#value' => t('Clear log messages'),
-    '#submit' => array('dblog_clear_log_submit'),
-  );
-  return $form;
-}
-
-/**
- * Form submission handler for dblog_clear_log_form().
- */
-function dblog_clear_log_submit() {
-  $_SESSION['dblog_overview_filter'] = array();
-  db_delete('watchdog')->execute();
-  drupal_set_message(t('Database log cleared.'));
-}
diff --git a/core/modules/dblog/lib/Drupal/dblog/Controller/DbLogController.php b/core/modules/dblog/lib/Drupal/dblog/Controller/DbLogController.php
index 795f689..7b4fe9f 100644
--- a/core/modules/dblog/lib/Drupal/dblog/Controller/DbLogController.php
+++ b/core/modules/dblog/lib/Drupal/dblog/Controller/DbLogController.php
@@ -15,6 +15,8 @@
 use Drupal\Core\Datetime\Date;
 use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\dblog\Form\DblogClearLogForm;
+use Drupal\dblog\Form\DblogFilterForm;
 use Drupal\user\UserStorageControllerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -105,7 +107,6 @@ public static function getLogLevelClassMap() {
    *
    * @see dblog_clear_log_form()
    * @see dblog_event()
-   * @see dblog_filter_form()
    */
   public function overview() {
 
@@ -116,8 +117,8 @@ public function overview() {
 
     $this->moduleHandler->loadInclude('dblog', 'admin.inc');
 
-    $build['dblog_filter_form'] = drupal_get_form('dblog_filter_form');
-    $build['dblog_clear_log_form'] = drupal_get_form('dblog_clear_log_form');
+    $build['dblog_filter_form'] = drupal_get_form(DblogFilterForm::create(\Drupal::getContainer()));
+    $build['dblog_clear_log_form'] = drupal_get_form(DblogClearLogForm::create(\Drupal::getContainer()));
 
     $header = array(
       // Icon column.
diff --git a/core/modules/dblog/lib/Drupal/dblog/Form/DblogClearLogForm.php b/core/modules/dblog/lib/Drupal/dblog/Form/DblogClearLogForm.php
new file mode 100644
index 0000000..ebdfb8f
--- /dev/null
+++ b/core/modules/dblog/lib/Drupal/dblog/Form/DblogClearLogForm.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\dblog\Form\DblogClearLogForm.
+ */
+
+namespace Drupal\dblog\Form;
+
+use Drupal\Core\Database\Connection;
+use Drupal\Core\Form\FormBase;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Provides the form that clears out the log.
+ */
+class DblogClearLogForm extends FormBase {
+
+  /**
+   * The database connection.
+   *
+   * @var \Drupal\Core\Database\Connection
+   */
+  protected $connection;
+
+  /**
+   * Constructs a new DblogClearLogForm.
+   *
+   * @param \Drupal\Core\Database\Connection $connection
+   *   The database connection.
+   */
+  public function __construct(Connection $connection) {
+    $this->connection = $connection;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('database')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormID() {
+    return 'dblog_clear_log_form';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, array &$form_state) {
+    $form['dblog_clear'] = array(
+      '#type' => 'details',
+      '#title' => $this->t('Clear log messages'),
+      '#description' => $this->t('This will permanently remove the log messages from the database.'),
+      '#collapsed' => TRUE,
+    );
+    $form['dblog_clear']['clear'] = array(
+      '#type' => 'submit',
+      '#value' => $this->t('Clear log messages'),
+    );
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, array &$form_state) {
+    $_SESSION['dblog_overview_filter'] = array();
+    $this->connection->delete('watchdog')->execute();
+    drupal_set_message($this->t('Database log cleared.'));
+  }
+
+}
diff --git a/core/modules/dblog/lib/Drupal/dblog/Form/DblogFilterForm.php b/core/modules/dblog/lib/Drupal/dblog/Form/DblogFilterForm.php
new file mode 100644
index 0000000..6be90fc
--- /dev/null
+++ b/core/modules/dblog/lib/Drupal/dblog/Form/DblogFilterForm.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\dblog\Form\DblogFilterForm.
+ */
+
+namespace Drupal\dblog\Form;
+
+use Drupal\Core\Form\FormBase;
+
+/**
+ * Provides the database logging filter form.
+ */
+class DblogFilterForm extends FormBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormID() {
+    return 'dblog_filter_form';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, array &$form_state) {
+    $filters = dblog_filters();
+
+    $form['filters'] = array(
+      '#type' => 'details',
+      '#title' => $this->t('Filter log messages'),
+      '#collapsed' => empty($_SESSION['dblog_overview_filter']),
+    );
+    foreach ($filters as $key => $filter) {
+      $form['filters']['status'][$key] = array(
+        '#title' => $filter['title'],
+        '#type' => 'select',
+        '#multiple' => TRUE,
+        '#size' => 8,
+        '#options' => $filter['options'],
+      );
+      if (!empty($_SESSION['dblog_overview_filter'][$key])) {
+        $form['filters']['status'][$key]['#default_value'] = $_SESSION['dblog_overview_filter'][$key];
+      }
+    }
+
+    $form['filters']['actions'] = array(
+      '#type' => 'actions',
+      '#attributes' => array('class' => array('container-inline')),
+    );
+    $form['filters']['actions']['submit'] = array(
+      '#type' => 'submit',
+      '#value' => $this->t('Filter'),
+    );
+    if (!empty($_SESSION['dblog_overview_filter'])) {
+      $form['filters']['actions']['reset'] = array(
+        '#type' => 'submit',
+        '#value' => $this->t('Reset'),
+        '#limit_validation_errors' => array(),
+        '#submit' => array(array($this, 'resetForm')),
+      );
+    }
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validateForm(array &$form, array &$form_state) {
+    if (empty($form_state['values']['type']) && empty($form_state['values']['severity'])) {
+      form_set_error('type', $this->t('You must select something to filter by.'));
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, array &$form_state) {
+    $filters = dblog_filters();
+    foreach ($filters as $name => $filter) {
+      if (isset($form_state['values'][$name])) {
+        $_SESSION['dblog_overview_filter'][$name] = $form_state['values'][$name];
+      }
+    }
+  }
+
+  /**
+   * Resets the filter form.
+   */
+  public function resetForm(array &$form, array &$form_state) {
+    $_SESSION['dblog_overview_filter'] = array();
+  }
+
+}
