Log exception so traceback contains timestamp and level?

Peter J. Holzer hjp-python at hjp.at
Sun Feb 7 10:12:15 EST 2021


On 2021-02-06 21:01:37 -0600, Skip Montanaro wrote:
> The logging package can log exceptions and call stacks, but it does
> (in my opinion) a suboptimal job of it. Consider this simple example:
> >>> import logging
> >>> FORMAT = '%(asctime)-15s %(levelname)s %(message)s'
> >>> logging.basicConfig(format=FORMAT, force=True)
> >>> log.warning("msg", stack_info=True)
> 2021-02-06 20:46:52,399 WARNING msg
> Stack (most recent call last):
>   File "<stdin>", line 1, in <module>
> 
> It formats the warning message just fine, but simply dumps the
> traceback onto the stream with no timestamp or level. For my purposes,
> this is more important for exceptions. (I'm just using the stack trace
> feature as it's easier in a small example.) I would like to call
> something like

I suspect that it just adds the stack trace to the message, so that you
are left with a multi-line message.

I often produce multi-line log messages myself. They are much nicer to
read than extremely long lines or groups of messages which should really
be read as a unit ...


> log.exception("Some message...")
> 
> and find something like this in the output stream:
> 
> 2021-02-06 20:46:52,399 ERROR Some message...
> 2021-02-06 20:46:52,400 ERROR Traceback (most recent call last):
> 2021-02-06 20:46:52,402 ERROR   File "<stdin>", line 1, in <module>

... like this.


> That way I can more easily grep log files for errors and get the
> entire detail, including the traceback.

Yes, grep is unfortunately very line-oriented. I often write write
simple scripts to filter log files where one message can span multiple
lines (Python's logging module isn't the only one - Samba and PostgreSQL
come to mind).

Another possibility would be to write the logs into a database. That
also has the advantage that the messages are stored in a structure and
you don't have to parse them.

        hp

-- 
   _  | Peter J. Holzer    | Story must make more sense than reality.
|_|_) |                    |
| |   | hjp at hjp.at         |    -- Charles Stross, "Creative writing
__/   | http://www.hjp.at/ |       challenge!"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://mail.python.org/pipermail/python-list/attachments/20210207/eeb11ed3/attachment.sig>


More information about the Python-list mailing list