[openstack-dev] [log] LOG.exception should contain an exception message or not?

Sean Dague sean at dague.net
Tue Jan 5 13:31:34 UTC 2016


On 01/05/2016 08:08 AM, Akihiro Motoki wrote:
> Hi,
> 
> # cross-posting to -dev and -operators ML
> 
> In the current most OpenStack implementation,
> when we use LOG.exception, we don't pass an exception message to LOG.exception:
> 
>   LOG.exception(_LE("Error while processing VIF ports"))
> 
> IIUC it is because the exception message will be logged at the end of
> a corresponding stacktrace.
> 
> We will get a line like (Full log: http://paste.openstack.org/show/483018/):
> 
>   ERROR ... Error while processing VIF ports
> 
> [Problem]
> 
> Many logging tools are still line-oriented (though logstash or fluentd
> can handle multiple lines).
> An ERROR line only contains a summary message without the actual failure reason.
> This makes difficult for line-oriented logging tools to classify error logs.
> 
> [Proposal]
> 
> My proposal is to pass an exception message to LOG.exception like:
> 
>   except <some exception> as exc:
>      LOG.exception(_LE("Error while processing VIF ports: %s"), exc)
> 
> This alllows line-oriented logging tools to classify error logs more easily.

What tools are you talking about here?

Realistically this is a trade off. Stack traces should only be happening
under exceptional circumstances, which means a user is going to be
engaged. The user is going to have a much easier time reading an
exception in a log if it's not got all the whitespace compressed out of it.

If it's possible to recover, the code that is generating the exception
shouldn't be logging it, but instead should do some kind of structured
recovery.

	-Sean

-- 
Sean Dague
http://dague.net



More information about the OpenStack-dev mailing list