[Twisted-Python] logging in twisted based projects

Lucas Taylor ltaylor.volks at gmail.com
Thu Mar 14 09:37:03 EDT 2013

On Mar 14, 2013, at 3:05 AM, Sergey Gerasimov 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

FileLogObserver will honor a 'system' kwarg that can be used to log the source of a message, so that:

	log.msg('Important message', system='MY_MODULE')


	2012-11-12 18:53:55-0700 [MY_MODULE] Important message

Arbitrary message formatting can be accomplished by suppling a `format` kwarg in place of a message:

	log.msg(format='[%(level)s] %(msg)s', level='CATASTROPHIC', msg='Important Message', system='MY_MODULE')


	2012-11-12 18:53:55-0700 [MY_MODULE] [CATASTROPHIC] Important message

That's a bit verbose, so creating a partial wrapper is useful:

from functools import partial
alert = partial(log.msg, format='[%(level)s] %(msg)s', level='CATASTROPHIC', system='MY_MODULE')

alert(msg='Something terrible')
alert(msg='Not so bad', level='INFO')  # override the default level

More generally, calls to log.msg() accept keyword arguments that can be inspected by any registered observer. You may want to write your own log observer and take advantage of this if you have specific filtering requirements.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20130314/cac4a8b8/attachment.htm 

More information about the Twisted-Python mailing list