Add timestamp to log messages.

This commit is contained in:
Darko Poljak 2018-09-23 20:34:42 +02:00
commit 6acf6f64dc
4 changed files with 48 additions and 3 deletions

View file

@ -251,6 +251,11 @@ def get_parsers():
'line). If no host or host file is specified then, by '
'default, read hosts from stdin.'),
dest='hostfile', required=False)
parser['config_args'].add_argument(
'-P', '--timestamp',
help=('Timestamp log messages with the current local date and time '
'in the format: YYYYMMDDHHMMSS.us.'),
action='store_true', dest='timestamp')
parser['config_args'].add_argument(
'-p', '--parallel', nargs='?', metavar='HOST_MAX',
type=functools.partial(check_lower_bounded_int, lower_bound=1,

View file

@ -175,7 +175,13 @@ class Config(object):
if args.parallel or args.jobs:
# If parallel execution then also log process id
cdist.log.setupParallelLogging()
if args.timestamp:
cdist.log.setupTimestampingParallelLogging()
else:
cdist.log.setupParallelLogging()
log = logging.getLogger("cdist")
elif args.timestamp:
cdist.log.setupTimestampingLogging()
log = logging.getLogger("cdist")
if args.parallel:

View file

@ -22,6 +22,7 @@
import logging
import sys
import datetime
# Define additional cdist logging levels.
@ -95,15 +96,42 @@ class DefaultLog(logging.Logger):
self.log(logging.TRACE, msg, *args, **kwargs)
class TimestampingLog(DefaultLog):
def filter(self, record):
"""Add timestamp to messages"""
super().filter(record)
now = datetime.datetime.now()
timestamp = now.strftime("%Y%m%d%H%M%S.%f")
record.msg = "[" + timestamp + "] " + str(record.msg)
return True
class ParallelLog(DefaultLog):
FORMAT = '%(levelname)s: [%(process)d]: %(message)s'
class TimestampingParallelLog(TimestampingLog, ParallelLog):
pass
def setupDefaultLogging():
del logging.getLogger().handlers[:]
logging.setLoggerClass(DefaultLog)
def setupTimestampingLogging():
del logging.getLogger().handlers[:]
logging.setLoggerClass(TimestampingLog)
def setupTimestampingParallelLogging():
del logging.getLogger().handlers[:]
logging.setLoggerClass(TimestampingParallelLog)
def setupParallelLogging():
del logging.getLogger().handlers[:]
logging.setLoggerClass(ParallelLog)