Exemplo n.º 1
0
def configure_datetime_logfile(config, handler):
    try:
        filename_format = config.logging[handler]['filename_format']
    except KeyError:
        log.error('filename_format not configured for handler {0}'.format(handler))
        return

    try:
        pkg = "{0}-{1}".format(os.path.basename(config.context.package.arg), randword(6))
        filename = os.path.join(config.log_root, filename_format.format(pkg, datetime.utcnow()))
    except IndexError:
        log.exception("missing replacement fields in {0}'s filename_format")

    # find handler amongst all the loggers and reassign the filename/stream
    for h in [x for l in logging.root.manager.loggerDict for x in logging.getLogger(l).handlers] + logging.root.handlers:
        if getattr(h, 'name', '') == handler:
            assert isinstance(h, logging.FileHandler)
            h.stream.close()
            h.baseFilename = filename
            h.stream = open(filename, 'a')
            url_template = config.logging[handler].get('web_log_url_template', False)
            if url_template:
                url_attrs = config.context.web_log.toDict()
                url_attrs['logfile'] = os.path.basename(filename)
                url = url_template.format(**url_attrs)
                log.info('Detailed {0} output to {1}'.format(handler, url))
            else:
                log.info('Detailed {0} output to {1}'.format(handler, filename))
            break
    else:
        log.error('{0} handler not found.'.format(handler))
Exemplo n.º 2
0
def configure_datetime_logfile(config, handler):
    try:
        filename_format = config.logging[handler]['filename_format']
    except KeyError:
        log.error('filename_format not configured for handler {0}'.format(handler))
        return

    try:
        pkg = "{0}-{1}".format(os.path.basename(config.context.package.arg), randword(6))
        filename = os.path.join(config.log_root, filename_format.format(pkg, datetime.utcnow()))
    except IndexError:
        errstr = 'Missing replacement fields in filename_format for handler {0}'.format(handler)
        log.error(errstr)
        log.debug(errstr, exc_info=True)

    # find handler amongst all the loggers and reassign the filename/stream
    for h in [x for l in logging.root.manager.loggerDict for x in logging.getLogger(l).handlers] + logging.root.handlers:
        if getattr(h, 'name', '') == handler:
            assert isinstance(h, logging.FileHandler)
            h.stream.close()
            h.baseFilename = filename
            h.stream = open(filename, 'a')
            url_template = config.logging[handler].get('web_log_url_template', False)
            if url_template:
                url_attrs = config.context.web_log.toDict()
                url_attrs['logfile'] = os.path.basename(filename)
                url = url_template.format(**url_attrs)
                log.info('Detailed {0} output to {1}'.format(handler, url))
            else:
                log.info('Detailed {0} output to {1}'.format(handler, filename))
            break
    else:
        log.error('{0} handler not found.'.format(handler))
Exemplo n.º 3
0
 def unique_name(self):
     context = self._config.context
     if hasattr(self, "_unique_name"):
         return self._unique_name
     self._unique_name = "{0}-{1}".format(context.ami.name, randword(6))
     return self._unique_name
Exemplo n.º 4
0
 def unique_name(self):
     context = self._config.context
     if hasattr(self, "_unique_name"):
         return self._unique_name
     self._unique_name = "{0}-{1}".format(context.ami.name, randword(6))
     return self._unique_name