Exemple #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
Exemple #2
0
 def test_disable_introspection(self):
     with logbook.Flags(introspection=False):
         with logbook.TestHandler() as h:
             self.log.warn('Testing')
             self.assert_(h.records[0].frame is None)
             self.assert_(h.records[0].calling_frame is None)
             self.assert_(h.records[0].module is None)
Exemple #3
0
def test_disable_introspection(logger):
    with logbook.Flags(introspection=False):
        with logbook.TestHandler() as h:
            logger.warn('Testing')
            assert h.records[0].frame is None
            assert h.records[0].calling_frame is None
            assert h.records[0].module is None
Exemple #4
0
def test_error_flag(logger):
    with capturing_stderr_context() as captured:
        with logbook.Flags(errors='print'):
            with logbook.Flags(errors='silent'):
                logger.warn('Foo {42}', 'aha')
        assert captured.getvalue() == ''

        with logbook.Flags(errors='silent'):
            with logbook.Flags(errors='print'):
                logger.warn('Foo {42}', 'aha')
        assert captured.getvalue() != ''

        with pytest.raises(Exception) as caught:
            with logbook.Flags(errors='raise'):
                logger.warn('Foo {42}', 'aha')
        assert 'Could not format message with provided arguments' in str(
            caught.value)
Exemple #5
0
    def test_error_flag(self):
        with capture_stderr() as captured:
            with logbook.Flags(errors='print'):
                with logbook.Flags(errors='silent'):
                    self.log.warn('Foo {42}', 'aha')
            self.assertEqual(captured.getvalue(), '')

            with logbook.Flags(errors='silent'):
                with logbook.Flags(errors='print'):
                    self.log.warn('Foo {42}', 'aha')
            self.assertNotEqual(captured.getvalue(), '')

            try:
                with logbook.Flags(errors='raise'):
                    self.log.warn('Foo {42}', 'aha')
            except Exception, e:
                self.assert_('Could not format message with provided '
                             'arguments' in str(e))
            else:
Exemple #6
0
def setup_logging():
    logbook.StderrHandler().push_application()
    logbook.Flags(errors='raise').push_application()