Пример #1
0
def test_extra_kv_custom_key(tracer):
    """
    Test if setting a custom "extra_kv_key" of a OpenTracingHandler works
    """
    operation_name = 'custom_extra_key'
    extra_kv_key = 'properties'

    logger_temp = logging.getLogger('CustomKey')
    logger_temp.setLevel(logging.DEBUG)

    logger_temp.addHandler(
        OpenTracingHandler(tracer=tracer, extra_kv_key=extra_kv_key))

    with tracer.start_active_span(operation_name):
        logger_temp.info(LOG['message'],
                         extra={
                             extra_kv_key: EXTRA_KV,
                             'kv': {
                                 1: 'a',
                                 2: 'b'
                             },
                             'my dict': {
                                 'a': 1,
                                 'b': 2
                             }
                         })

    check_finished_spans(tracer=tracer,
                         operation_names_expected=[operation_name],
                         logs_expected={operation_name: [LOG]})
Пример #2
0
def logger(tracer):
    """
    Get a logger with an initialized OpenTracingHandler
    """
    logger = logging.getLogger('Test')
    logger.setLevel(logging.DEBUG)

    # this fixture is called multiple times and we have to remove the handlers added from the previous fixture call
    logger.handlers.clear()

    logger.addHandler(OpenTracingHandler(tracer=tracer))

    return logger
Пример #3
0
def test_pass_span_custom_key(tracer):
    """
    Test is spans can be passed to the logging call under a custom key
    """
    operation_name = 'pass_span_custom_key'
    span_key = 'spamspam'

    logger_temp = logging.getLogger('PassSpanCustom')
    logger_temp.setLevel(logging.DEBUG)

    logger_temp.addHandler(OpenTracingHandler(tracer=tracer,
                                              span_key=span_key))

    with tracer.start_span(operation_name) as span:
        logger_temp.info(TEST_LOG['message'], extra={span_key: span})

    check_finished_spans(tracer=tracer,
                         operation_names_expected=[operation_name],
                         logs_expected={operation_name: [TEST_LOG]})
def test_root_logger(caplog, tracer):
    """
    Test root logger of logging
    """
    handler = OpenTracingHandler(tracer=tracer)

    caplog.set_level(level=logging.DEBUG)
    logging.root.addHandler(handler)

    operation_name = 'my_active_span'

    with tracer.start_active_span(operation_name):
        logging.info(TEST_LOG['message'])

    check_finished_spans(tracer=tracer,
                         operation_names_expected=[operation_name],
                         logs_expected={operation_name: [TEST_LOG]})

    logging.root.removeHandler(handler)
def test_custom_formats(tracer, kv_format, expected):
    """
    Test custom formats of the OpenTracingFormatter
    """
    operation_name = 'custom_formatter'
    logger = logging.getLogger('CustomFormatter')
    logger.setLevel(logging.DEBUG)

    # this test is called multiple times and we have to remove the handlers added from the previous function call
    logger.handlers.clear()

    formatter = OpenTracingFormatter(kv_format=kv_format)
    logger.addHandler(OpenTracingHandler(tracer=tracer, formatter=formatter))

    with tracer.start_active_span(operation_name):
        logger.info(MESSAGE)

    check_finished_spans(tracer=tracer,
                         operation_names_expected=[operation_name],
                         logs_expected={operation_name: [expected]})
Пример #6
0
import logging

from opentracing.mocktracer import MockTracer

from logging_opentracing import OpenTracingHandler

# initialize a mock tracer
tracer = MockTracer()

# prepare the logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.INFO)

# create a new OpenTracing handler for the logging package
handler = OpenTracingHandler(tracer=tracer)
logger.addHandler(handler)

# start an active span
with tracer.start_active_span('hello-world'):
    # this log will be propagated to
    logger.info('Hello World from Python logging to OpenTracing')

# retrieve the finished span
finished_span = tracer.finished_spans()[0]
# get the log line from
log = finished_span.logs[0]

# print the key_values of the log
print(log.key_values)

expected_output = "{'event': 'info', 'message': 'Hello World from Python logging to OpenTracing'}\n"
tracer = MockTracer()

# prepare the logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.INFO)

# create a new formatter with a custom format
formatter = OpenTracingFormatter(
    kv_format={
        'event': '%(levelname_lower)s',
        'message': '%(message)s',
        'source': '%(filename)s:L%(lineno)d',
    })

# create a new OpenTracing handler which uses the custom formatter
handler = OpenTracingHandler(tracer=tracer, formatter=formatter)
logger.addHandler(handler)

# start an active span
with tracer.start_active_span('hello-world') as scope:
    # this log will be propagated to
    logger.info('Hello World from Python logging to OpenTracing')

# retrieve the finished span
finished_span = tracer.finished_spans()[0]
# get the log line from
log = finished_span.logs[0]

# print the key_values of the log
print(log.key_values)