> On May 9, 2016, at 1:50 PM, Daniel Sutcliffe <dan...@gmail.com> wrote:
> 
> The project I am working on uses pymodbus which I am sure shares a
> fairly common attribute with many other modules of using Python's
> standard Logging mechanism - a very reasonable choice even for a
> module that supports Twisted, the library can also be used entirely
> synchronously and thus would not want a required dependency of
> Twisted.

Sure, this makes sense.

> It struck me that it would be great to be able to redirect the
> standard logging library to use twisted.logger by some sort of 'Clever
> Monkey Patching' and that this may be a relatively common
> requirement... however after extensive searching, and asking on the
> pymodbus list, I can't find any evidence that such a thing has ever
> been attempted or discussed.

You shouldn't need monkey patching; the standard library logger does have 
facilities for setting up custom handlers.  We just need to make one.  Honestly 
it would be great if this were featured within Twisted itself; it would make a 
great contribution to twisted.logger proper.

> The reverse mechanism of sending twisted.logger's output to the
> standard library is of course handled by the
> twisted.logger.STDLibLogObserver (and similar in twisted legacy
> logging) but the documentation for this even suggests why this is a
> bad idea: 'Warning: specific logging configurations (example: network)
> can lead to this observer blocking.' which seems to me why it would be
> better to attempt this the other way around...

I would very much like to see this :).  The standard library logging mechanism 
is in common use, and until we can spin it out into a separate project, 
`twisted.logger´ is unlikely to 

> Am I crazy to even think this? is it just the rambling of
> Python/Twisted newb? Or is there something I'm missing that would make
> this impossible to do generically, and awkward to provide a vague
> recipe of how to do?

No, there's nothing that would make it impossible.  If you want to contribute 
it.

> I do appreciate that twisted.logger offers a more feature rich
> (structured) API and the Logging API would only be able to provide
> level and text but it would be better than loosing any possibly useful
> log messages from used modules in my mind.

I think you might even be able to claw back some structured information out of 
the stdlib logging machinery?  LogRecord does have 'args' and 'msg', and we 
could convert that into a twisted.logger format string.  This would be more 
expensive than using twisted.logger directly of course, but it would still 
provide a lot more useful information.

> If anyone can enlighten me I would be most appreciative,

I think just try to write a Handler 
(<https://docs.python.org/2.7/library/logging.handlers.html#module-logging.handlers>)
 that converts LogRecord objects to event dictionaries, and then emit them to a 
<https://twistedmatrix.com/documents/16.1.1/api/twisted.logger.ILogObserver.html>
 and let us know if you hit any problems.

-glyph


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

Reply via email to