diff -ubp a/dblog.admin.inc b/dblog.admin.inc
--- dblog.admin.inc	Wed Sep 17 00:47:54 2008
+++ dblog.admin.inc	Sun Sep 20 06:52:28 2009
@@ -185,11 +185,15 @@ function dblog_build_filter_query() {
     return;
   }
 
-  $filters = dblog_filters();
+  $filters = module_invoke_all('log_filters');
 
   // Build query
   $where = $args = array();
   foreach ($_SESSION['dblog_overview_filter'] as $key => $filter) {
+    // modules might disable their filters (hook log_filters)
+    if (!isset($filters[$key])) continue;
+    
+    if ($filters[$key]['conjunction']) {
     $filter_where = array();
     foreach ($filter as $value) {
       $filter_where[] = $filters[$key]['where'];
@@ -199,6 +203,11 @@ function dblog_build_filter_query() {
       $where[] = '('. implode(' OR ', $filter_where) .')';
     }
   }
+    elseif(!empty($filter)) {
+      $where[] = $filters[$key]['where'];
+      $args[] = $filter;
+    }
+  }
   $where = !empty($where) ? implode(' AND ', $where) : '';
 
   return array(
@@ -207,34 +216,6 @@ function dblog_build_filter_query() {
   );
 }
 
-
-/**
- * List dblog administration filters that can be applied.
- */
-function dblog_filters() {
-  $filters = array();
-
-  foreach (_dblog_get_message_types() as $type) {
-    $types[$type] = $type;
-  }
-
-  if (!empty($types)) {
-    $filters['type'] = array(
-      'title' => t('Type'),
-      'where' => "w.type = '%s'",
-      'options' => $types,
-    );
-  }
-
-  $filters['severity'] = array(
-    'title' => t('Severity'),
-    'where' => 'w.severity = %d',
-    'options' => watchdog_severity_levels(),
-  );
-
-  return $filters;
-}
-
 /**
  * Formats a log message for display.
  *
@@ -263,25 +244,26 @@ function _dblog_format_message($dblog) {
 function dblog_filter_form() {
   $session = &$_SESSION['dblog_overview_filter'];
   $session = is_array($session) ? $session : array();
-  $filters = dblog_filters();
+  $filters = module_invoke_all('log_filters');
 
   $form['filters'] = array(
     '#type' => 'fieldset',
     '#title' => t('Filter log messages'),
     '#theme' => 'dblog_filters',
     '#collapsible' => TRUE,
-    '#collapsed' => empty($session),
+    '#collapsed' => TRUE,
   );
   foreach ($filters as $key => $filter) {
     $form['filters']['status'][$key] = array(
       '#title' => $filter['title'],
       '#type' => 'select',
-      '#multiple' => TRUE,
+      '#multiple' => $filter['conjunction'],
       '#size' => 8,
       '#options' => $filter['options'],
     );
     if (!empty($session[$key])) {
       $form['filters']['status'][$key]['#default_value'] = $session[$key];
+      $form['filters']['#collapsed'] = FALSE;
     }
   }
 
@@ -303,9 +285,18 @@ function dblog_filter_form() {
  * Validate result from dblog administration filter form.
  */
 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.'));
+  if ($form_state['values']['op'] == t('Filter')) {
+    $filters = module_invoke_all('log_filters');
+    $valid = FALSE;
+    foreach($filters as $key => $filter) {
+      if (!empty($form_state['values'][$key])) {
+        $valid = TRUE;
+        break;
+      }
+    }
+    if (!$valid) form_set_error('type', t('You must select something to filter by.'));
   }
+  module_invoke_all('log_filters_validate', $form, $form_state);
 }
 
 /**
@@ -313,12 +304,15 @@ function dblog_filter_form_validate($for
  */
 function dblog_filter_form_submit($form, &$form_state) {
   $op = $form_state['values']['op'];
-  $filters = dblog_filters();
+  $filters = module_invoke_all('log_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];
+        }
+        else {
+          unset($_SESSION['dblog_overview_filter'][$name]);
         }
       }
       break;
diff -ubp a/dblog.css b/dblog.css
--- dblog.css	Tue Sep 02 11:56:50 2008
+++ dblog.css	Sun Sep 20 06:58:58 2009
@@ -1,6 +1,6 @@
 /* $Id: dblog.css,v 1.4.2.1 2008/09/02 16:56:49 dries Exp $ */
 
-#edit-type-wrapper, #edit-severity-wrapper {
+#dblog-filter-form .form-item {
   float: left; /* LTR */
   padding-right: .8em; /* LTR */
   margin: 0.1em;
diff -ubp a/dblog.module b/dblog.module
--- dblog.module	Wed Apr 09 16:11:46 2008
+++ dblog.module	Sun Sep 20 06:47:50 2009
@@ -149,6 +149,37 @@ function dblog_watchdog($log = array()) 
 }
 
 /**
+ * Implement hook_log_filters().
+ * 
+ * List dblog administration filters that can be applied.
+ */
+function dblog_log_filters() {
+  $filters = array();
+
+  foreach (_dblog_get_message_types() as $type) {
+    $types[$type] = $type;
+  }
+
+  if (!empty($types)) {
+    $filters['type'] = array(
+      'title' => t('Type'),
+      'where' => "w.type = '%s'",
+      'conjunction' => TRUE,
+      'options' => $types,
+    );
+  }
+
+  $filters['severity'] = array(
+    'title' => t('Severity'),
+    'where' => 'w.severity = %d',
+    'conjunction' => TRUE,
+    'options' => watchdog_severity_levels(),
+  );
+
+  return $filters;
+}
+
+/**
  * Theme dblog administration filter selector.
  *
  * @ingroup themeable
