示例#1
0
    def test_stackdriver_with_credentials_base64_as_environment(self):
        valid_cred = encode_file_as_base64(VALID_GOOGLE_CREDENTIALS)

        os.environ['TEMLOGGER_GOOGLE_CREDENTIALS_BASE64'] = valid_cred

        temlogger.config.set_provider('stackdriver')
        temlogger.getLogger('stackdriver-base64')
示例#2
0
    def test_switch_logger(self):
        logger = temlogger.getLogger('switch-logger-1')
        self.assertTrue(isinstance(logger, logging.Logger))
        self.assertEqual(logger.logging_provider, 'default')

        temlogger.config.set_provider('logstash')
        logger = temlogger.getLogger('switch-logger-1')
        self.assertTrue(isinstance(logger, logging.Logger))
        self.assertEqual(logger.logging_provider, 'logstash')

        temlogger.config.set_provider('default')
        logger = temlogger.getLogger('switch-logger-1')
        self.assertTrue(isinstance(logger, logging.Logger))
        self.assertEqual(logger.logging_provider, 'default')
    def test_register_one_handler_global(self):
        def add_tracker_id(message):
            message['tracker_id'] = 'tracker_id_hex'
            return message

        temlogger.config.set_provider('logstash')
        temlogger.config.set_app_name('test-app-name')
        temlogger.config.set_environment('local')
        temlogger.config.setup_event_handlers([add_tracker_id])

        logger = temlogger.getLogger('first_handler')

        format_base = FormatterBase()
        with patch.object(FormatterBase,
                          'format_with_handlers',
                          wraps=format_base.format_with_handlers) as mock_fwh:

            logger_message = 'First handler message'
            logger.info(logger_message)

            expected = {
                '@timestamp': '2020-03-06T21:29:36.246Z',
                'message': logger_message,
                'host': socket.gethostname(),
                'path': os.path.abspath(__file__),
                'tracker_id': 'tracker_id_hex',
                'environment': 'local',
                'level': 'INFO',
                'app_name': 'test-app-name',
                'logger_name': logger.name,
                'payload': {
                    'stack_info': None
                }
            }
            mock_fwh.assert_called_once_with(expected)
示例#4
0
    def test_register_event_handler_on_one_logger_only(self):
        random_key = uuid.uuid4().hex

        def add_random_key_to_message_local(message):
            message['random_key'] = random_key
            return message

        temlogger.config.set_provider('logstash')
        logger = temlogger.getLogger(
            'five_handler', event_handlers=[add_random_key_to_message_local])

        handler = logger.handlers[0]
        formatter = handler.formatter

        with patch.object(FormatterBase,
                          'format_with_handlers',
                          wraps=formatter.format_with_handlers) as mock_fwh:

            logger_message = 'Five handler message'
            logger.info(logger_message)

            expected = {
                '@timestamp': '2020-03-06T21:29:36.246Z',
                'message': logger_message,
                'host': socket.gethostname(),
                'path': os.path.abspath(__file__),
                'environment': '',
                'level': 'INFO',
                'logger_name': logger.name,
                'payload': {
                    'stack_info': None
                },
                'random_key': random_key,
            }
            mock_fwh.assert_called_once_with(expected)
示例#5
0
    def test_get_stackdriver_logger_passing_envs_as_parameter(
            self, mocked_cls):
        """"""
        temlogger.config.set_provider('stackdriver')

        logger = temlogger.getLogger('stackdriver-2')
        self.assertEqual(logger.logging_provider, 'stackdriver')
示例#6
0
    def test_get_logstash_logger_passing_envs_by_environ(self):
        os.environ['TEMLOGGER_PROVIDER'] = 'logstash'
        os.environ['TEMLOGGER_URL'] = 'localhost'
        os.environ['TEMLOGGER_PORT'] = '5000'

        logger = temlogger.getLogger('logstash-2')
        self.assertEqual(logger.logging_provider, 'logstash')
示例#7
0
    def test_register_dotted_string_module(self):
        def clear_keys(message):
            message.clear()
            return message

        temlogger.config.set_provider('logstash')
        temlogger.config.setup_event_handlers([
            'temlogger.tests.base.add_tracker_id_to_message',
        ])

        logger = temlogger.getLogger('four_handler')

        formatter = logger.handlers[0].formatter

        with patch.object(FormatterBase,
                          'format_with_handlers',
                          wraps=formatter.format_with_handlers) as mock_fwh:

            logger_message = 'Four handler message'
            logger.info(logger_message)

            expected = {
                '@timestamp': '2020-03-06T21:29:36.246Z',
                'message': logger_message,
                'host': socket.gethostname(),
                'path': os.path.abspath(__file__),
                'environment': '',
                'level': 'INFO',
                'logger_name': logger.name,
                'payload': {
                    'stack_info': None
                },
                'tracker_id_global': 'tracker_id_value_global',
            }
            mock_fwh.assert_called_once_with(expected)
示例#8
0
    def test_get_console_logger_passing_envs_by_environ(self):
        os.environ['TEMLOGGER_PROVIDER'] = 'console'

        logger = temlogger.getLogger('console-logger-1')

        self.assertTrue(isinstance(logger, logging.Logger))
        self.assertEqual(logger.logging_provider, 'console')
示例#9
0
    def test_get_stackdriver_logger_passing_envs_by_environ(self, mocked_cls):
        os.environ['TEMLOGGER_PROVIDER'] = 'stackdriver'

        logger = temlogger.getLogger('stackdriver-1')

        self.assertTrue(isinstance(logger, logging.Logger))
        self.assertEqual(logger.logging_provider, 'stackdriver')
示例#10
0
    def test_get_logstash_logger_passing_envs_as_parameter(self):
        temlogger.config.set_provider('logstash')
        temlogger.config.set_url('localhost')
        temlogger.config.set_port('5000')
        temlogger.config.set_environment('staging')

        logger = temlogger.getLogger('logstash-3')
        self.assertEqual(logger.logging_provider, 'logstash')
示例#11
0
    def test_get_stackdriver_logger_and_log_info(self, mocked_cls):
        """"""
        temlogger.config.set_provider('stackdriver')

        logger = temlogger.getLogger('stackdriver-2')

        self.assertEqual(len(logger.handlers), 1)
        self.assertEqual(logger.logging_provider, 'stackdriver')

        logger._log = mock.Mock()

        logger.info('StackDriver log')

        logger._log.assert_called_once_with(
            logging.INFO, 'StackDriver log', ())
示例#12
0
    def test_get_logstash_logger_and_log_info(self):
        """"""
        temlogger.config.set_provider('logstash')
        temlogger.config.set_url('localhost')
        temlogger.config.set_port('5000')

        logger = temlogger.getLogger('logstash-3')

        self.assertEqual(len(logger.handlers), 1)
        self.assertEqual(logger.logging_provider, 'logstash')

        logger._log = mock.Mock()

        logger.info('Logstash log')

        logger._log.assert_called_once_with(logging.INFO, 'Logstash log', ())
    def test_register_event_handler_that_clear_message_keys(self):
        def clear_keys(message):
            message.clear()
            return message

        temlogger.config.set_provider('logstash')
        temlogger.config.setup_event_handlers([clear_keys])

        logger = temlogger.getLogger('three_handler')

        formatter = logger.handlers[0].formatter

        with patch.object(FormatterBase,
                          'format_with_handlers',
                          wraps=formatter.format_with_handlers) as mock_fwh:
            logger.info('Two handler')

            expected = {}
            mock_fwh.assert_called_once_with(expected)
示例#14
0
    def test_get_console_logger_and_assert_log_was_sent_out(self):
        import sys
        temlogger.config.set_provider('console')

        logger = temlogger.getLogger('console-3')

        self.assertEqual(len(logger.handlers), 1)
        self.assertEqual(logger.logging_provider, 'console')

        log_message = 'Console log entry message'
        log_record = logging.makeLogRecord({'msg': log_message})

        handler = logger.handlers[0]

        handler.emit = mock.Mock()

        logger.info(log_message)

        # handler.emit calls handler.stream(sys.stderror.write) to write logs
        assert handler.stream == sys.stderr
        handler.emit.assert_called_once()
        self.assertTrue(log_message in str(handler.emit.call_args_list))
示例#15
0
    def test_register_two_handler_global(self):
        def tracker_id_param(message):
            message['tracker_id'] = 'tracker_id_hex'
            return message

        def add_request_id_param(message):
            message['request_id'] = 'request_id_hex2'
            return message

        temlogger.config.set_provider('logstash')
        temlogger.config.setup_event_handlers(
            [tracker_id_param, add_request_id_param])

        logger = temlogger.getLogger('two_handler')

        formatter = logger.handlers[0].formatter
        with patch.object(FormatterBase,
                          'format_with_handlers',
                          wraps=formatter.format_with_handlers) as mock_fwh:

            logger_message = 'Two handler message'
            logger.info(logger_message)

            expected = {
                '@timestamp': '2020-03-06T21:29:36.246Z',
                'message': logger_message,
                'host': socket.gethostname(),
                'path': os.path.abspath(__file__),
                'tracker_id': 'tracker_id_hex',
                'request_id': 'request_id_hex2',
                'environment': '',
                'level': 'INFO',
                'logger_name': logger.name,
                'payload': {
                    'stack_info': None
                }
            }
            mock_fwh.assert_called_once_with(expected)
示例#16
0
    def test_get_default_logger_when_logging_provider_is_not_set(self):
        logger = temlogger.getLogger('test')

        self.assertTrue(isinstance(logger, logging.Logger))
        self.assertEqual(logger.logging_provider, 'default')
        self.assertEqual(len(logger.handlers), 0)
示例#17
0
    def test_get_console_logger_passing_envs_as_parameter(self):
        temlogger.config.set_provider('console')

        logger = temlogger.getLogger('console-logger-2')
        self.assertEqual(logger.logging_provider, 'console')
示例#18
0
    def test_stackdriver_with_credentials_base64(self):
        valid_cred = encode_file_as_base64(VALID_GOOGLE_CREDENTIALS)

        temlogger.config.set_provider('stackdriver')
        temlogger.config.set_google_credentials_base64(valid_cred)
        temlogger.getLogger('stackdriver-base64')