diff options
| author | iElectric <unknown> | 2010-07-09 16:12:29 +0200 |
|---|---|---|
| committer | iElectric <unknown> | 2010-07-09 16:12:29 +0200 |
| commit | b0157137e29ae197ba36e559e172982626e8b1eb (patch) | |
| tree | da675896470d96763b77e4352b6a5db11b7ad073 /migrate/versioning/shell.py | |
| parent | dffe82653cbd23cb003cd40114e2d5e331061c8a (diff) | |
| download | sqlalchemy-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.py | 27 |
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__) |
