""" Running backup actions """
import os
+import logging
import logging as log
from backupninja import config
configuration file. opts are the parsed commandline options,
global_config is the parsed global configuration.
"""
+ config_name = os.path.basename(action_config)
# Split the action filename
- parts = os.path.basename(action_config).split('.')
+ parts = os.path.basename(config_name).split('.')
if (len(parts) != 2):
log.error('Invalid action filename: "%s". Should be in the form name.type, where type is a valid handler.' % action_config)
return
(action_name, action_ty) = parts
- log.info('Running action "%s.%s"', action_name, action_ty)
+
+ action_log = logging.getLogger(config_name)
+ action_log.info('Running')
try:
# Create a handler for this action
- action = handlers.create_action(action_ty)
+ action = handlers.create_action(action_ty, logger=action_log)
# Let the handler load its configuration file
action.load_config(action_config)
# Run it
# Ask the action if there where any failures
success = not action.failed
except Exception, e:
- log.error('Unexpected exception: %s', e)
+ action_log.error('Unexpected exception: %s', e)
import traceback
log.debug(traceback.format_exc())
success = False
if success:
- log.info('Running action "%s.%s" succeeded', action_name, action_ty)
+ action_log.info('Succeeded')
else:
- log.info('Running action "%s.%s" failed', action_name, action_ty)
+ action_log.info('Failed')
which is a combination of a action type and a specific action
configuration).
"""
- def __init__(self):
+ def __init__(self, logger):
# Subclasses should overwrite this with their default config
# See backupninja.config.load_config for the structure of this
# value.
# A logger object for this action. In the future, this might
# become a specific logger, that includes the action name and
# type.
- self.log = log
+ self.log = logger
def run(self, **kwargs):
"""