exc_info

    
      
diff --git a/pythonetc/README.md b/pythonetc/README.md
index c599f74..118c90a 100644
--- a/pythonetc/README.md
+++ b/pythonetc/README.md
@@ -92,6 +92,7 @@ More:
 1. ./deepcopy.md                (6 April 2021, 18:00)
 1. ./eval-order.md              (8 April 2021, 18:00)
 1. ./key-error.md               (15 April 2021, 18:00)
+1. ./exc-info.md
 1. ./dedent.md
 1. ./immutable.md
 1. ./sqlite3.md
diff --git a/pythonetc/exc-info.md b/pythonetc/exc-info.md
new file mode 100644
index 0000000..a9d36c8
--- /dev/null
+++ b/pythonetc/exc-info.md
@@ -0,0 +1,57 @@
+
+
+`exc_info`
+
+When something fails, usually you want to log it. Let's have a look at a small toy example:
+
+
+```python
+from logging import getLogger
+
+logger = getLogger(__name__)
+channels = dict(
+  pythonetc='Python etc',
+)
+
+def update_channel(slug, name):
+  try:
+    old_name = channels[slug]
+  except KeyError as exc:
+    logger.error(repr(exc))
+    channels[slug] = name
+    return
+  if name != old_name:
+    channels[slug] = name
+
+update_channel('telegram', 'Telegram News')
+# Logged: KeyError('telegram')
+```
+
+This example has a few issues:
+
++ There is no explicit log message. So, when it fails, you can't search in the project where this log record comes from.
++ There is no traceback. When the `try` block execution is more complicated, we want to be able to track where exactly an the call stack the exception occured. To achieve it, logger methods provide `exc_info` argument. When it is set to `True`, the current exception with traceback will be added into the log message.
+
+So, this is how we can do it better:
+
+```python
+def update_channel(slug, name):
+  try:
+    old_name = channels[slug]
+  except KeyError as exc:
+    logger.error('channel not found', exc_info=True)
+  ...
+
+update_channel('telegram', 'Telegram News')
+# channel not found
+# Traceback (most recent call last):
+#   File "...", line 10, in update_channel
+#     old_name = channels[slug]
+# KeyError: 'telegram'
+```
+
+Also, logger provides a convenient method `exception` which is the same as `error` with `exc_info=True`:
+
+```python
+logger.exception('channel not found')
+```