summaryrefslogtreecommitdiff
path: root/migrate/versioning/shell.py
diff options
context:
space:
mode:
authoriElectric <unknown>2010-07-09 16:12:29 +0200
committeriElectric <unknown>2010-07-09 16:12:29 +0200
commitb0157137e29ae197ba36e559e172982626e8b1eb (patch)
treeda675896470d96763b77e4352b6a5db11b7ad073 /migrate/versioning/shell.py
parentdffe82653cbd23cb003cd40114e2d5e331061c8a (diff)
downloadsqlalchemy-migrate-b0157137e29ae197ba36e559e172982626e8b1eb.tar.gz
use stdout for logging.INFO and lower; for the rest use stderr
Diffstat (limited to 'migrate/versioning/shell.py')
-rw-r--r--migrate/versioning/shell.py27
1 files changed, 22 insertions, 5 deletions
diff --git a/migrate/versioning/shell.py b/migrate/versioning/shell.py
index 53e9417..8b59bdc 100644
--- a/migrate/versioning/shell.py
+++ b/migrate/versioning/shell.py
@@ -161,12 +161,29 @@ def main(argv=None, **kwargs):
# configure logging
if not asbool(kwargs.pop('disable_logging', False)):
+ # filter to log =< INFO into stdout and rest to stderr
+ class SingleLevelFilter(logging.Filter):
+ def __init__(self, min=None, max=None):
+ self.min = min or 0
+ self.max = max or 100
+
+ def filter(self, record):
+ return self.min <= record.levelno <= self.max
+
logger = logging.getLogger()
- logger.setLevel(logging.INFO)
- formatter = logging.Formatter("%(message)s")
- ch = logging.StreamHandler(sys.stdout)
- ch.setFormatter(formatter)
- logger.addHandler(ch)
+ h1 = logging.StreamHandler(sys.stdout)
+ f1 = SingleLevelFilter(max=logging.INFO)
+ h1.addFilter(f1)
+ h2 = logging.StreamHandler(sys.stderr)
+ f2 = SingleLevelFilter(min=logging.WARN)
+ h2.addFilter(f2)
+ logger.addHandler(h1)
+ logger.addHandler(h2)
+
+ if options.debug:
+ logger.setLevel(logging.DEBUG)
+ else:
+ logger.setLevel(logging.INFO)
log = logging.getLogger(__name__)