Log ERROR to stderr and rest to stdout. (#576)
This commit is contained in:
parent
f2614469c5
commit
08bc38dd0f
3 changed files with 45 additions and 8 deletions
|
@ -148,9 +148,7 @@ class Config(object):
|
||||||
|
|
||||||
if args.parallel or args.jobs:
|
if args.parallel or args.jobs:
|
||||||
# If parallel execution then also log process id
|
# If parallel execution then also log process id
|
||||||
del logging.getLogger().handlers[:]
|
cdist.log.setupParallelLogging()
|
||||||
log_format = '%(levelname)s: [%(process)d]: %(message)s'
|
|
||||||
logging.basicConfig(format=log_format)
|
|
||||||
log = logging.getLogger("cdist")
|
log = logging.getLogger("cdist")
|
||||||
|
|
||||||
if args.parallel:
|
if args.parallel:
|
||||||
|
|
48
cdist/log.py
48
cdist/log.py
|
@ -21,6 +21,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
# Define additional cdist logging levels.
|
# Define additional cdist logging levels.
|
||||||
|
@ -48,14 +49,38 @@ def _trace(msg, *args, **kwargs):
|
||||||
logging.trace = _trace
|
logging.trace = _trace
|
||||||
|
|
||||||
|
|
||||||
class Log(logging.Logger):
|
class DefaultLog(logging.Logger):
|
||||||
|
|
||||||
|
FORMAT = '%(levelname)s: %(message)s'
|
||||||
|
|
||||||
|
class StdoutFilter(logging.Filter):
|
||||||
|
def filter(self, rec):
|
||||||
|
return rec.levelno != logging.ERROR
|
||||||
|
|
||||||
|
class StderrFilter(logging.Filter):
|
||||||
|
def filter(self, rec):
|
||||||
|
return rec.levelno == logging.ERROR
|
||||||
|
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
|
|
||||||
self.name = name
|
|
||||||
super().__init__(name)
|
super().__init__(name)
|
||||||
|
|
||||||
|
formatter = logging.Formatter(self.FORMAT)
|
||||||
|
|
||||||
self.addFilter(self)
|
self.addFilter(self)
|
||||||
|
|
||||||
|
stdout_handler = logging.StreamHandler(sys.stdout)
|
||||||
|
stdout_handler.addFilter(self.StdoutFilter())
|
||||||
|
stdout_handler.setLevel(logging.TRACE)
|
||||||
|
stdout_handler.setFormatter(formatter)
|
||||||
|
|
||||||
|
stderr_handler = logging.StreamHandler(sys.stderr)
|
||||||
|
stderr_handler.addFilter(self.StderrFilter())
|
||||||
|
stderr_handler.setLevel(logging.ERROR)
|
||||||
|
stderr_handler.setFormatter(formatter)
|
||||||
|
|
||||||
|
self.addHandler(stdout_handler)
|
||||||
|
self.addHandler(stderr_handler)
|
||||||
|
|
||||||
def filter(self, record):
|
def filter(self, record):
|
||||||
"""Prefix messages with logger name"""
|
"""Prefix messages with logger name"""
|
||||||
|
|
||||||
|
@ -70,5 +95,18 @@ class Log(logging.Logger):
|
||||||
self.log(logging.TRACE, msg, *args, **kwargs)
|
self.log(logging.TRACE, msg, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
logging.setLoggerClass(Log)
|
class ParallelLog(DefaultLog):
|
||||||
logging.basicConfig(format='%(levelname)s: %(message)s')
|
FORMAT = '%(levelname)s: [%(process)d]: %(message)s'
|
||||||
|
|
||||||
|
|
||||||
|
def setupDefaultLogging():
|
||||||
|
del logging.getLogger().handlers[:]
|
||||||
|
logging.setLoggerClass(DefaultLog)
|
||||||
|
|
||||||
|
|
||||||
|
def setupParallelLogging():
|
||||||
|
del logging.getLogger().handlers[:]
|
||||||
|
logging.setLoggerClass(ParallelLog)
|
||||||
|
|
||||||
|
|
||||||
|
setupDefaultLogging()
|
||||||
|
|
|
@ -17,6 +17,7 @@ next:
|
||||||
* Core: Add -l/--log-level option (Darko Poljak)
|
* Core: Add -l/--log-level option (Darko Poljak)
|
||||||
* Type __install_stage: Fix __debug -> __cdist_log_level (Darko Poljak)
|
* Type __install_stage: Fix __debug -> __cdist_log_level (Darko Poljak)
|
||||||
* Documentation: Document __cdist_log_level (Darko Poljak)
|
* Documentation: Document __cdist_log_level (Darko Poljak)
|
||||||
|
* Core: Log ERROR to stderr and rest to stdout (Darko Poljak, Steven Armstrong)
|
||||||
|
|
||||||
4.6.1: 2017-08-30
|
4.6.1: 2017-08-30
|
||||||
* Type __user: Explore with /etc files (passwd, group, shadow) (Philippe Gregoire)
|
* Type __user: Explore with /etc files (passwd, group, shadow) (Philippe Gregoire)
|
||||||
|
|
Loading…
Reference in a new issue