Esempio n. 1
0
def injectLogger(use_syslog = True, log_file = None, verbose = False,
                 capture_output = True,
                 twisted_error_log_level = ERROR,
                 twisted_info_log_level = INFO):

    logger = logging.getLogger('')

    formatter = BTLFormatter("%(asctime)s - %(name)s - %(process)d - "
                             "%(levelname)s - %(message)s")

    if log_file is not None:
        lf_handler = logging.handlers.RotatingFileHandler(filename=log_file,
                                                          mode='a',
                                                          maxBytes=2**27,
                                                          backupCount=10)

        lf_handler.setFormatter(formatter)
        logger.setLevel(logging.DEBUG)
        logger.addHandler(lf_handler)

    if use_syslog:
        SysLogHandler = logging.handlers.SysLogHandler
        sl_handler = SysLogHandler('/dev/log',
                                   facility=SysLogHandler.LOG_LOCAL0)
                                   #address = (SYSLOG_HOST, SYSLOG_PORT))
        # namespace - pid - level - message
        sl_handler.setFormatter(BTLFormatter("%(name)s - %(process)d - "
                                             "%(levelname)s - %(message)s"))
        logger.setLevel(logging.DEBUG)
        logger.addHandler(sl_handler)

    if verbose:
        so_handler = logging.StreamHandler(sys.stdout)
        so_handler.setFormatter(formatter)
        logger.setLevel(logging.DEBUG)
        logger.addHandler(so_handler)

    twisted_logger.start(capture_output = capture_output,
                         error_log_level = twisted_error_log_level,
                         info_log_level = twisted_info_log_level)
Esempio n. 2
0
def injectLogger(use_syslog=True,
                 log_file=None,
                 verbose=False,
                 capture_output=True,
                 twisted_error_log_level=ERROR,
                 twisted_info_log_level=INFO,
                 capture_stderr_log_level=ERROR,
                 capture_stdout_log_level=INFO,
                 capture_stderr_name='stderr',
                 capture_stdout_name='stdout',
                 log_level=DEBUG,
                 log_twisted=True):
    """
       Installs logging.

       @param use_syslog:    log to syslog.  use_syslog, log_file, and verbose are not
                             mutually exclusive.
       @param log_file:      log to a file.
       @param verbose:       output logs to stdout.  Setting verbose and capture_output
                             to this function does NOT result in an infinite loop.
       @param capture_output: redirects stdout and stderr to the logger. Be careful.  This can
                             create infinite loops with loggers that
                             output to stdout or stderr.
       @param twisted_error_log_level: log level for errors reported
                             by twisted.
       @param twisted_info_log_level: log level for non-errors reported by twisted.
                             If capture_output is set then this is also the log
                             level for anything output to stdout or stderr.
       @param log_level:     only log events that have level >= passed level
                             are logged.  This is achieved by setting the log level in
                             each of the installed handlers.
       @param capture_stderr_log_level: log level for output captured from stdout.
       @param capture_stdout_log_level: log level for output captured from stderr.
       @param capture_stderr_name: log name used for stderr.  'name'
                             refers to the name arg passed to logging.getLogger(name).
       @param capture_stdout_name: log name used for stdout.  Analogous to capture_stderr_name.
    """
    logger = logging.getLogger('')
    logger.setLevel(
        DEBUG)  # we use log handler levels to control output level.

    formatter = BTLFormatter("%(asctime)s - %(name)s - %(process)d - "
                             "%(levelname)s - %(message)s")

    if log_file is not None:
        lf_handler = logging.handlers.RotatingFileHandler(filename=log_file,
                                                          mode='a',
                                                          maxBytes=2**27,
                                                          backupCount=10)

        lf_handler.setFormatter(formatter)
        lf_handler.setLevel(log_level)
        logger.addHandler(lf_handler)

    if use_syslog:
        sl_handler = SysLogHandler('/dev/log',
                                   facility=SysLogHandler.LOG_LOCAL0)
        #address = (SYSLOG_HOST, SYSLOG_PORT))
        # namespace - pid - level - message
        sl_handler.setFormatter(
            BTLFormatter("%(name)s - %(process)d - "
                         "%(levelname)s - %(message)s"))
        sl_handler.setLevel(log_level)
        logger.addHandler(sl_handler)

    if verbose:
        # StreamHandler does not capture stdout, it directs output from
        # loggers to stdout.
        so_handler = logging.StreamHandler(sys.stdout)
        so_handler.setFormatter(formatter)
        so_handler.setLevel(log_level)
        logger.addHandler(so_handler)

    if capture_output:
        sys.stdout = StdioPretender(capture_stdout_name,
                                    capture_stdout_log_level)
        sys.stderr = StdioPretender(capture_stderr_name,
                                    capture_stderr_log_level)

    if log_twisted:
        twisted_logger.start(error_log_level=twisted_error_log_level,
                             info_log_level=twisted_info_log_level)
Esempio n. 3
0
def injectLogger(use_syslog = True, log_file = None, verbose = False,
                 capture_output = True,
                 twisted_error_log_level = ERROR,
                 twisted_info_log_level = INFO,
                 capture_stderr_log_level = ERROR,
                 capture_stdout_log_level = INFO,
                 capture_stderr_name = 'stderr',
                 capture_stdout_name = 'stdout',
                 log_level = DEBUG,
                 log_twisted = True ):
    """
       Installs logging.

       @param use_syslog:    log to syslog.  use_syslog, log_file, and verbose are not
                             mutually exclusive.
       @param log_file:      log to a file.
       @param verbose:       output logs to stdout.  Setting verbose and capture_output
                             to this function does NOT result in an infinite loop.
       @param capture_output: redirects stdout and stderr to the logger. Be careful.  This can
                             create infinite loops with loggers that
                             output to stdout or stderr.
       @param twisted_error_log_level: log level for errors reported
                             by twisted.
       @param twisted_info_log_level: log level for non-errors reported by twisted.
                             If capture_output is set then this is also the log
                             level for anything output to stdout or stderr.
       @param log_level:     only log events that have level >= passed level
                             are logged.  This is achieved by setting the log level in
                             each of the installed handlers.
       @param capture_stderr_log_level: log level for output captured from stdout.
       @param capture_stdout_log_level: log level for output captured from stderr.
       @param capture_stderr_name: log name used for stderr.  'name'
                             refers to the name arg passed to logging.getLogger(name).
       @param capture_stdout_name: log name used for stdout.  Analogous to capture_stderr_name.
    """
    logger = logging.getLogger('')
    logger.setLevel(DEBUG)  # we use log handler levels to control output level.

    formatter = BTLFormatter("%(asctime)s - %(name)s - %(process)d - "
                             "%(levelname)s - %(message)s")

    if log_file is not None:
        lf_handler = logging.handlers.RotatingFileHandler(filename=log_file,
                                                          mode='a',
                                                          maxBytes=2**27,
                                                          backupCount=10)

        lf_handler.setFormatter(formatter)
        lf_handler.setLevel(log_level)
        logger.addHandler(lf_handler)

    if use_syslog:
        sl_handler = SysLogHandler('/dev/log',
                                   facility=SysLogHandler.LOG_LOCAL0)
                                   #address = (SYSLOG_HOST, SYSLOG_PORT))
        # namespace - pid - level - message
        sl_handler.setFormatter(BTLFormatter("%(name)s - %(process)d - "
                                             "%(levelname)s - %(message)s"))
        sl_handler.setLevel(log_level)
        logger.addHandler(sl_handler)

    if verbose:
        # StreamHandler does not capture stdout, it directs output from
        # loggers to stdout.
        so_handler = logging.StreamHandler(sys.stdout)
        so_handler.setFormatter(formatter)
        so_handler.setLevel(log_level)
        logger.addHandler(so_handler)

    if capture_output:
        sys.stdout = StdioPretender( capture_stdout_name, capture_stdout_log_level )
        sys.stderr = StdioPretender( capture_stderr_name, capture_stderr_log_level )

    if log_twisted:
       twisted_logger.start(error_log_level = twisted_error_log_level,
                             info_log_level = twisted_info_log_level)