[Twisted-Python] logging in twisted based projects

exarkun at twistedmatrix.com exarkun at twistedmatrix.com
Thu Mar 14 10:57:30 EDT 2013


On 01:52 pm, stephen at thorne.id.au wrote:
>It's also perfectly fine to use python's logging module from within
>twisted, you don't have to use twisted.log, but you should be aware 
>this
>will make your log files hard to correlate (between twistd.log and your 
>own
>logfiles).

For posterity: within programs that *use* Twisted.

Please don't use it within code being contributed to Twisted itself. :)

Also, there is no such thing as "twisted.log".  There is 
"twisted.python.log".

Also, using stdlib logging doesn't necessarily force you to have two log 
files.  It sounds like Sergey already knows how to avoid this, since he 
mentioned PythonLoggingObserver which bridges twisted.python.log to 
stdlib logging.

Also, twisted.python.log doesn't prevent any filtering you might want to 
do, it just doesn't support it the same way the stdlib logging module 
does it.  If you want to filter log messages, a good way to do it is 
probably to write a log observer that implements your filtering logic 
and then passes any unfiltered messages to another log observer.  In 
this way you can apply filtering regardless of what ultimate observer 
you want to use.

For example:

    def makeLevelFilter(level, observer):
        def filter(event):
            if event.get("level", 0) > level:
                return observer(event)
        return filter

    obs = FileLogObserver(...)
    addObserver(makeLevelFilter(7, obs.emit))

Jean-Paul
>
>On Thu, Mar 14, 2013 at 10:05 AM, Sergey Gerasimov <sergun at gmail.com> 
>wrote:
>>I’m implementing some project based on twisted.****
>>
>>** **
>>
>>I would like to use some logging mechanism in my modules and see both
>>twisted generated log records and log records from my modules****
>>
>>and be able to filter log records by level and  source (generated by
>>twisted, or subset of my modules).****
>>
>>** **
>>
>>What should I do in this case?****
>>
>>Log with python logging module in my code and send log records 
>>generated
>>by twisted to PythonLoggingObserver? ****
>>
>>Or should I avoid using of python logging module and log only with 
>>twisted
>>logging module? I didn’t find features like filtering logs in twisted
>>logging.****
>>
>>** **
>>
>>Am I right that twisted based log observer uses blocking i/o? 
>>Example:****
>>
>>observer = log.FileLogObserver(sys.stdout) # sys.stdio.write used in
>>implementation****
>>
>>** **
>>
>>** **
>>
>>_______________________________________________
>>Twisted-Python mailing list
>>Twisted-Python at twistedmatrix.com
>>http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>



More information about the Twisted-Python mailing list