From 4b8c6c405619f7624847a469304e0d1cea053f19 Mon Sep 17 00:00:00 2001
From: Tim Graham <timograham@gmail.com>
Date: Wed, 22 Aug 2012 17:36:46 -0700
Subject: [PATCH] [1.4.x] Fixed #17069 -- Added log filter example to docs.

Backport of e06189f7ceb48013b37b902588bea6750c989b14 from master.
---
 docs/topics/logging.txt | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/docs/topics/logging.txt b/docs/topics/logging.txt
index 0426ae3d17..b682e2fccd 100644
--- a/docs/topics/logging.txt
+++ b/docs/topics/logging.txt
@@ -516,6 +516,35 @@ logging module.
    through the filter. Handling of that record will not proceed if the callback
    returns False.
 
+   For instance, to filter out :class:`~django.http.UnreadablePostError`
+   (raised when a user cancels an upload) from the admin emails, you would
+   create a filter function::
+
+    from django.http import UnreadablePostError
+
+    def skip_unreadable_post(record):
+        if record.exc_info:
+            exc_type, exc_value = record.exc_info[:2]
+            if isinstance(exc_value, UnreadablePostError):
+                return False
+        return True
+
+   and then add it to your logging config::
+
+        'filters': {
+            'skip_unreadable_posts': {
+                '()': 'django.utils.log.CallbackFilter',
+                'callback': skip_unreadable_post,
+            }
+        },
+        'handlers': {
+            'mail_admins': {
+                'level': 'ERROR',
+                'filters': ['skip_unreadable_posts'],
+                'class': 'django.utils.log.AdminEmailHandler'
+            }
+        },
+
 .. class:: RequireDebugFalse()
 
    .. versionadded:: 1.4