mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-24 07:26:29 +00:00

I couldn't be bothered to untangle this, so here it goes: * Log colors depending on loglevel * Simplified Filelogger * Remove description=None from basetask * create_list creates task list from argument now * Task rollback feature: If a task fails, the tasklist calls rollback() on the completed tasks in reverse order * Added TaskException to common.exceptions as a base to extend from * Added TriggerRollback task to common.tasks for development purposes * An EBS volume for bootstrapping is now created and attached to the instance (including rollback actions) * EC2 Connect task now depends on host.GetInfo
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
import logging
|
|
|
|
|
|
def get_logfile_path(manifest_path):
|
|
import sys
|
|
import os.path
|
|
from datetime import datetime
|
|
|
|
manifest_basename = os.path.basename(manifest_path)
|
|
manifest_name, _ = os.path.splitext(manifest_basename)
|
|
timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
|
|
filename = "{timestamp}_{name}.log".format(timestamp=timestamp, name=manifest_name)
|
|
return os.path.normpath(os.path.join(os.path.dirname(__file__), '../logs', filename))
|
|
|
|
def setup_logger(logfile=None, debug=False):
|
|
root = logging.getLogger()
|
|
root.setLevel(logging.NOTSET)
|
|
|
|
file_handler = logging.FileHandler(logfile)
|
|
file_handler.setFormatter(FileFormatter('[%(asctime)s] %(message)s'))
|
|
file_handler.setLevel(logging.DEBUG)
|
|
root.addHandler(file_handler)
|
|
|
|
import sys
|
|
console_handler = logging.StreamHandler(sys.stderr)
|
|
console_handler.setFormatter(ConsoleFormatter())
|
|
if debug:
|
|
console_handler.setLevel(logging.DEBUG)
|
|
else:
|
|
console_handler.setLevel(logging.INFO)
|
|
root.addHandler(console_handler)
|
|
|
|
|
|
class ConsoleFormatter(logging.Formatter):
|
|
level_colors = {
|
|
logging.ERROR: 'red',
|
|
logging.WARNING: 'magenta',
|
|
logging.INFO: 'blue',
|
|
}
|
|
def format(self, record):
|
|
if(record.levelno in self.level_colors):
|
|
from termcolor import colored, cprint
|
|
record.msg = colored(record.msg, self.level_colors[record.levelno])
|
|
return super(ConsoleFormatter, self).format(record)
|
|
|
|
|
|
class FileFormatter(logging.Formatter):
|
|
def format(self, record):
|
|
return super(FileFormatter, self).format(record)
|