Lowering Spew Volume in Activities (Set the logging level, but what's setting it high?)


Since I burned a few hours trying to track this down, I'll post the work-around... the problem is simple; Log Spew.

Productive uses Python's logging module throughout to provide debugging and informational output during development. We log enormous amounts of information at debug and info levels (about 2.5% of our total run-time is spent in the logging module, to give you an idea). In each module, we can uncomment a line that makes the logging from that level switch to DEBUG level and then run the activity to see the results. That works fine when run directly from Python, only the module(s) you're debugging right now produce messages, other than that you just see warnings/errors from the other modules.

However, when run under Sugar, the logs were showing every single debug-level message. It's as if somewhere in the Sugar import something had done a logging.root.setLevel( logging.DEBUG ) as a side-effect. I spent quite a long while spelunking/grepping through the source directories looking for the offending line and couldn't find it.

The work-around is to set the root level to WARN explicitly in the activity.
import logging
logging.root.setLevel( logging.WARN )
That takes care of the spew, but it doesn't explain what is making it happen in the first place. Whatever is setting up the logger should probably be defaulting to WARN level (as is normal in Python), otherwise the temp storage is going to get filled up pretty quickly.

[Update] Yay, got Productive working across the network for user-moves, don't yet have the "produce unit" signal working. The problem was actually that the simulation was trying to run every millisecond (rather than every 1/2 second or so). With that the network communications was timing out waiting for the super-busy server to process the input.

Comments

Comments are closed.

Pingbacks

Pingbacks are closed.