<div dir="ltr"><b>@Christian,</b><br><br>> According to <a href="http://legacy.python.org/dev/peps/pep-0352/">http://legacy.python.org/dev/peps/pep-0352/</a> the message<br>> attribute of BaseException is deprecated since Python 2.6 and was<br>
> dropped in Python 3.0.<br><br>Some projects have custom exception hierarchy, with strictly defined attributes<br>(e.g. message, or something else). In a previous mail, I mean exactly that case,<br>not the case with a built-in exceptions.<br>
<br><br><b>@Joshua, </b><br><br>> Any reason we would want to do this vs using exc_info=True?<br><br>1. It will print traceback and it's not behavior we always want.<div>2. It doesn't handle unicode. I mean, we may have something like this in our output: </div>
<div>  \u043f\u0440\u0438\u0432\u0435\u0442<br><div><font face="arial, sans-serif"><br></font></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, May 16, 2014 at 5:19 AM, Joshua Harlow <span dir="ltr"><<a href="mailto:harlowja@yahoo-inc.com" target="_blank">harlowja@yahoo-inc.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">



<div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif">
<div>Any reason we would want to do this vs using exc_info=True?</div>
<div><br>
</div>
<div>This leaves it up to the underlying logger to dump the exception, the traceback and whatever else.</div>
<div><br>
</div>
<div>For example u can do.</div>
<div><br>
</div>
<div>>>> LOG.warn("Something broke at this point", exc_info=True)</div>
<div><br>
</div>
<span>
<div style="font-family:Calibri;font-size:11pt;text-align:left;color:black;border-width:1pt medium medium;border-style:solid none none;padding:3pt 0in 0in;border-top-color:rgb(181,196,223)">
<span style="font-weight:bold">From: </span>Igor Kalnitsky <<a href="mailto:ikalnitsky@mirantis.com" target="_blank">ikalnitsky@mirantis.com</a>><br>
<span style="font-weight:bold">Reply-To: </span>"OpenStack Development Mailing List (not for usage questions)" <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><br>

<span style="font-weight:bold">Date: </span>Thursday, May 15, 2014 at 2:20 PM<br>
<span style="font-weight:bold">To: </span>"OpenStack Development Mailing List (not for usage questions)" <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><br>

<span style="font-weight:bold">Subject: </span>Re: [openstack-dev] [oslo] Logging exceptions and Python 3<br>
</div><div><div class="h5">
<div><br>
</div>
<blockquote style="BORDER-LEFT:#b5c4df 5 solid;PADDING:0 0 0 5;MARGIN:0 0 0 5">
<div>
<div>
<div dir="ltr">
<div>Hi,</div>
<div><br>
</div>
<div>> Is there a reason to log the exception as Unicode on Python 2?</div>
<div><br>
</div>
<div>Sure, why not? Some exceptions may have unicode message with non-ASCII</div>
<div>characters. and we obviously can't cast such exceptions with str() in</div>
<div>Python 2.x.</div>
<div><br>
</div>
<div><br>
</div>
<div>> The problem is that I don't know what is the best syntax to log exceptions.</div>
<div><br>
</div>
<div>I hate this unicode dances too, since I don't understand all nuances and</div>
<div>potential pitfalls. But I belive the better approach is to use unicode()</div>
<div>for Python 2.x and str() for Python 3.x.</div>
<div><br>
</div>
<div>Example:</div>
<div><br>
</div>
<div>    LOG.error(six.text_type(e))</div>
<div><br>
</div>
<div><br>
</div>
<div>P.S: I've a quick look over logging implementaion, and figured out</div>
<div>that it has some code to dial with unicode. In few words, if we know</div>
<div>about exception's attributes, it's better to use it directly to log:</div>
<div><br>
</div>
<div>Example:</div>
<div><br>
</div>
<div>    LOG.error(e.message)</div>
<div><br>
</div>
<div><br>
</div>
<div>- Igor</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Thu, May 15, 2014 at 6:29 PM, Victor Stinner <span dir="ltr">
<<a href="mailto:victor.stinner@enovance.com" target="_blank">victor.stinner@enovance.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Hi,<br>
<br>
I'm trying to define some rules to port OpenStack code to Python 3. I just<br>
added a section in the "Port Python 2 code to Python 3" about formatting<br>
exceptions and the logging module:<br>
<a href="https://wiki.openstack.org/wiki/Python3#logging_module_and_format_exceptions" target="_blank">https://wiki.openstack.org/wiki/Python3#logging_module_and_format_exceptions</a><br>
<br>
The problem is that I don't know what is the best syntax to log exceptions.<br>
Some projects convert the exception to Unicode, others use str(). I also saw<br>
six.u(str(exc)) which is wrong IMO (it can raise unicode error if the message<br>
contains a non-ASCII character).<br>
<br>
IMO the safest option is to use str(exc). For example, use<br>
LOG.debug(str(exc)).<br>
<br>
Is there a reason to log the exception as Unicode on Python 2?<br>
<br>
Victor<br>
<br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</blockquote>
</div></div></span>
</div>

</blockquote></div><br></div></div></div>