Пример #1
0
def script_logging_context(syslog=_has_syslog_handler, syslog_facility=logbook.SyslogHandler.LOG_LOCAL1,
                           syslog_buffer_size=1024, syslog_message_size=32768, syslog_address=("127.0.0.1", 514),
                           syslog_level=logbook.DEBUG, logfile=True, logfile_path="logfile", logfile_mode='a',
                           logfile_encoding='utf-8', logfile_level=logbook.DEBUG, logfile_delay=False,
                           logfile_max_size=1024 * 1024, logfile_backup_count=32, stderr=True,
                           stderr_level=logbook.INFO):
    """
    Context manager that creates a setup of logbook handlers based on the parameters received and sensible defaults.
    """
    from logbook.concurrency import enable_gevent
    enable_gevent()
    redirect_python_logging_to_logbook()

    processor = create_processor()
    flags = logbook.Flags(errors='silent')
    handlers = [logbook.NullHandler()]

    if syslog:
        handlers.append(create_syslog_handler(facility=syslog_facility, buffer_size=syslog_buffer_size,
                                              message_size=syslog_message_size, address=syslog_address,
                                              level=syslog_level))
    if logfile:
        handlers.append(create_rotating_file_handler(path=logfile_path, mode=logfile_mode,
                                                     encoding=logfile_encoding, level=logfile_level,
                                                     delay=logfile_delay, max_size=logfile_max_size,
                                                     backup_count=logfile_backup_count))
    if stderr:
        handlers.append(create_stderr_handler(level=stderr_level))

    with logbook.NestedSetup([processor, flags] + handlers).applicationbound():
        yield
Пример #2
0
 def _enable_logbook_gevent(self):
     try:
         from logbook.concurrency import enable_gevent
     except ImportError:
         pass
     else:
         enable_gevent()
Пример #3
0
    def gevent(request):
        module_name = getattr(request.module, '__name__', '')
        if not any(s in module_name for s in ('queues', 'processors')) and request.param:
            from logbook.concurrency import enable_gevent, _disable_gevent
            enable_gevent()

            @request.addfinalizer
            def fin():
                _disable_gevent()
Пример #4
0
        def decorator(*args, **kwargs):
            from infi.logging.wrappers import script_logging_context
            from logbook.concurrency import enable_gevent
            from infi.traceback import traceback_context
            from os import getpid, getuid
            from datetime import datetime
            from docopt import DocoptExit
            from sys import stderr
            import logbook
            if _bypass_console_script_logging:
                return f(*args, **kwargs)

            enable_gevent()
            filename = '/tmp/{}.log'.format(name if name else f.__name__)
            with script_logging_context(logfile_path=filename, logfile_max_size=20 * 1024 * 1024), traceback_context(), exception_handling_context():
                logbook.set_datetime_format("local")
                logger.info("Calling {}".format(f.__name__))
                result = f(*args, **kwargs)
                logger.info("Call to {} returned {}".format(f.__name__, result))
                return result
Пример #5
0
        def decorator(*args, **kwargs):
            from infi.logging.wrappers import script_logging_context
            from logbook.concurrency import enable_gevent
            from infi.traceback import traceback_context
            from os import getpid, getuid
            from datetime import datetime
            from docopt import DocoptExit
            from sys import stderr
            import logbook
            if _bypass_console_script_logging:
                return f(*args, **kwargs)

            enable_gevent()
            filename = '/tmp/{}.log'.format(name if name else f.__name__)
            with script_logging_context(logfile_path=filename, logfile_max_size=20 * 1024 * 1024), traceback_context(), exception_handling_context():
                logbook.set_datetime_format("local")
                logger.info("Calling {}".format(f.__name__))
                result = f(*args, **kwargs)
                logger.info("Call to {} returned {}".format(f.__name__, result))
                return result
Пример #6
0
from infi import unittest
from infi.pyutils.contexts import contextmanager
from infi.app_repo.utils import path, fopen
from infi.app_repo.config import Configuration
from mock import patch
from logging import getLogger
from logbook.concurrency import enable_gevent
logger = getLogger(__name__)
enable_gevent()


class TestCase(unittest.TestCase):
    @contextmanager
    def temporary_base_directory_context(self):
        from infi.app_repo.utils import temporary_directory_context
        with patch("infi.app_repo.config.get_base_directory") as get_base_directory:
            with temporary_directory_context() as tempdir:
                from infi.app_repo.config import Configuration
                get_base_directory.return_value = tempdir
                previous_base_directory = Configuration.base_directory.default
                Configuration.base_directory._default = tempdir
                try:
                    yield tempdir
                finally:
                    Configuration.base_directory._default = previous_base_directory

    @contextmanager
    def ftp_client_context(self, config, login_with_credentials_in_config=False):
        from ftplib import FTP
        from infi.app_repo.ftpserver import make_ftplib_gevent_friendly
        make_ftplib_gevent_friendly()
Пример #7
0
from infi import unittest
from infi.pyutils.contexts import contextmanager
from infi.app_repo.utils import path, fopen
from infi.app_repo.config import Configuration
from mock import patch
from logging import getLogger
from logbook.concurrency import enable_gevent
logger = getLogger(__name__)
enable_gevent()


class TestCase(unittest.TestCase):
    @contextmanager
    def temporary_base_directory_context(self):
        from infi.app_repo.utils import temporary_directory_context
        with patch("infi.app_repo.config.get_base_directory"
                   ) as get_base_directory:
            with temporary_directory_context() as tempdir:
                from infi.app_repo.config import Configuration
                get_base_directory.return_value = tempdir
                previous_base_directory = Configuration.base_directory.default
                Configuration.base_directory._default = tempdir
                try:
                    yield tempdir
                finally:
                    Configuration.base_directory._default = previous_base_directory

    @contextmanager
    def ftp_client_context(self,
                           config,
                           login_with_credentials_in_config=False):