[Twisted-Python] Log output formatting (was Re: logging question)

exarkun at twistedmatrix.com exarkun at twistedmatrix.com
Wed Nov 30 08:04:27 EST 2011

On 04:07 am, screwtape at froup.com wrote:
>On Tue, Nov 29, 2011 at 10:44:21AM -0800, Don Dwiggins wrote:
>>Looking at the source of log.py, I'm at a bit of a loss to reconcile
>>these two forces.  Certainly, the two log observers implemented there
>>use textFromEventDict, but one could create a different observer that
>>does things entirely differently.
>>The best idea I can come up with is, in the documentation for msg, 
>>to the documentation for the chosen log observer; then, in each log
>>observer's documentation, describe how the formatting is done, either
>>explicitly, or by reference to textFromEventDict.  (And maybe in the
>>documentation for ILogObserver, recommend strongly that each
>>implementation be explicit about message formatting.)  There should
>>probably also be something in the logging howto.
>>Any better suggestions?
>While not every log observer needs to flatten a log event dict into
>a string, that particular approach is probably common enough that it
>deserves a simple solution. I think, in my ideal world, there would be
>a LogMessage class that inherits from dict, with a __str__ method that
>looks something like:
>    def __str__(self):
>         if "msg" in self:
>             return self["msg"]
>         elif "format" in self:
>             return self["format"] % self
>         else return dict.__str__(self)
>If the standard Twisted logging functions automatically constructed
>LogMessage instances from dict instances, it should be easy enough for
>future ILogObserver implementations to do the right thing (by just
>calling str(msg)). Of course, they could also do more sophisticated
>things like pulling particular keys out of the message to set
>observer-specific message properties (like syslog channel and severity,

Oooorrrr there could be a function that takes a dict intended to 
represent a text message and returns that message as a string.

>The documentation for the standard Twisted logging functions could then
>just point to the LogMessage documentation to describe what goes into
>a log event and how it gets interpreted, with a footnote to the effect
>that different log observers can handle the same message in different
>Twisted-Python mailing list
>Twisted-Python at twistedmatrix.com

More information about the Twisted-Python mailing list