Thanks,

That logger really helps.

Best,

On Sat, May 19, 2018 at 10:53 AM, Mark Williams <m...@enotuniq.org> wrote:
> This is an unfortunate implementation detail that you can address by starting 
> the logging system.
>
> Try this:
>
>
> from twisted.logger import globalLogBeginner, textFileLogObserver
> from twisted.internet.defer import Deferred
> import sys
>
> globalLogBeginner.beginLoggingTo([textFileLogObserver(sys.stdout)])
>
> def raiseErr(what):
>     raise Exception(what)
>
> d = Deferred()
> d.addCallback(raiseErr)
> d.callback("asdf")
>
>
> You should see a traceback.
>
> For future reference, the important lines are these:
>
>
> from twisted.logger import globalLogBeginner, textFileLogObserver
> import sys
> globalLogBeginner.beginLoggingTo([textFileLogObserver(sys.stdout)])
>
>
> They should be executed before any code that uses Deferreds.  twistd and the 
> newer twist Twisted application runners automatically run these for you 
> before starting your Service.  This is a great reason to write Twisted 
> application plugins:
>
> https://twistedmatrix.com/documents/current/core/howto/tap.html
>
> Of course it would be better to not have to do anything at all to see 
> important information related to errors; the default behavior of Deferred 
> makes things harder to understand than they have to be.  Fortunately, good 
> progress has been made on this issue:
>
> https://twistedmatrix.com/trac/ticket/9333
>
> The associated PR needs a careful review to ensure its handling of unicode is 
> correct.  Any takers?
>
> On Fri, May 18, 2018, at 1:56 AM, Shiyao MA wrote:
>> Hi,
>>
>> Running the following script prints "Unhandled Error", but doesn't
>> contain the traceback of where the exception is raised.  In a massive
>> codebase, it's hard to locate where is the malfunctioning code is.
>>
>>
>> from twisted.internet.defer import Deferred
>>
>> def raiseErr(what):
>>     raise Exception(what)
>>
>> d = Deferred()
>> d.addCallback(raiseErr)
>> d.callback("asdf")
>>
>> # how to show the traceback without manually adding an errback at the end?
>> # adding at the *end* of a deferred is hard as we don't know when the
>> client stops adding callbacks.
>>
>>
>>
>>
>> --
>> Best,
>> Shiyao
>>
>> _______________________________________________
>> Twisted-Python mailing list
>> Twisted-Python@twistedmatrix.com
>> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
>
> --
>   Mark Williams
>   m...@enotuniq.org
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python@twistedmatrix.com
> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python



-- 
Best,
Shiyao

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to