Jaeger Logger Reporter
Project description
Jaeger Logger Reporter
This packages enables a way to log your span in a simple way. It provides a LoggerReporter with some configurations. But enables a way to create custom logger reporters.
It extends the jaeger-client packages, change the configuration in a way it's possible use customer logger reporters.
Installation
Running the following command:
$ pip install jaeger-logger-reporter
Usage
It's very similar to the jaeger-client, the only difference will be the configuration.
import time
import logging
import sys
from jaeger_logger_reporter import LoggerTraceConfig, LoggerTracerReporter
if __name__ == "__main__":
config = LoggerTraceConfig(
config={
'sampler': {
'type': 'const',
'param': 1,
},
'local_agent': {
'reporting_host': 'localhost',
'reporting_port': '5775',
},
'logging': True,
'max_tag_value_length': sys.maxsize
},
service_name='test',
validate=True,
)
# setup my logger (optional)
tracer_logger = logging.getLogger('my.logger')
tracer_logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler()
formatter = logging.Formatter(
'[%(levelname)s][%(date)s] %(name)s %(span)s %(event)s %(message)s')
handler.setFormatter(formatter)
handler.setLevel(logging.DEBUG)
tracer_logger.addHandler(handler)
# define the logger to use, by default LoggerTracerReporter but can be changed.
tracer = config.initialize_tracer(
logger_reporter=LoggerTracerReporter(logger=tracer_logger))
with tracer.start_span('TestSpan') as span:
span.log_kv({'event': 'test message', 'life': 42})
with tracer.start_span('ChildSpan', child_of=span) as child_span:
child_span.log_kv({'event': 'down below'})
# yield to IOLoop to flush the spans - https://github.com/jaegertracing/jaeger-client-python/issues/50
time.sleep(2)
tracer.close() # flush any buffered spans
It will produce a logger output similar to:
2020-10-13T22:37:02.538850
[INFO][2020-10-13T22:37:02.538850] my.logger [TestSpan] STARTED
INFO:my.logger:
2020-10-13T22:37:02.538918
[INFO][2020-10-13T22:37:02.538918] my.logger [TestSpan][ChildSpan] STARTED
INFO:my.logger:
2020-10-13T22:37:02.538924
[DEBUG][2020-10-13T22:37:02.538924] my.logger [TestSpan][ChildSpan] LOG down below
DEBUG:my.logger:down below
2020-10-13T22:37:02.538940
[INFO][2020-10-13T22:37:02.538940] my.logger [TestSpan][ChildSpan] FINISHED 2.2172927856445312e-05s
INFO:my.logger: 2.2172927856445312e-05s
2020-10-13T22:37:02.538887
[DEBUG][2020-10-13T22:37:02.538887] my.logger [TestSpan] LOG test message 42
DEBUG:my.logger:test message 42
2020-10-13T22:37:02.538985
[INFO][2020-10-13T22:37:02.538985] my.logger [TestSpan] FINISHED 0.00013494491577148438s
INFO:my.logger: 0.00013494491577148438s
LoggerTracerReporter
LoggerTracerReporter have some configurations.
Span identifier
By default the span it's identifier by operation_name eg:
[get_user]
But can be changed:
def span_identifier(span):
return f'**{span}**'
...
tracer = config.initialize_tracer(
logger=LoggerTracerReporter(span_identifier=span_identifier))
And the output will be something like:
**79408c731416c394:55150307c2aa6ca8:0:1 test.TestSpan**
Note: if the span has a parent the parent identifier will be display before the span identifier:
[parent_id][span_id]
Logger formatter
The logger follows this formatter:
'%(levelname)s][%(date)s] %(name)s %(span)s %(event)s %(message)s'
Where:
levelnameis the log level of message;dateis the time of event;nameis the logger name;spanis the span identifier;eventis the span eventmessageis the message of the log
The logger can be overrider on LoggerTracerReporterinstaciation.
Span life cycle
Defined tags
There are some Tags keys defined. Can be used to improve the log quality:
LOG_HTTP_METHODLOG_HTTP_URLLOG_HTTP_STATUS_CODELOG_SPAN_ERRORLOG_SPAN_HTML_DATALOG_SPAN_HTML_RESPONSELOG_SPAN_SERIALIZER_RESPONSE
Events
There's some different events types:
STARTED
Identify the start of the event. It will show:
dateof the begin of the spanLOG_HTTP_METHODandLOG_HTTP_URLif exist, as amessage
TAG
Represent a value of a span tag (log_level = DEBUG)
LOG
Represent a value of a log_kv (log_level = DEBUG)`
FINISHED
Identify the end of the event. It will show:
dateof the end of the spanLOG_HTTP_STATUS_CODEif exist, and the duration fo the span as amessage
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file jaeger_logger_reporter-0.0.9.tar.gz.
File metadata
- Download URL: jaeger_logger_reporter-0.0.9.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5055d1f23cacf85d0be58dceef0878d86384869bf475edf80aab92e8ef7fc906
|
|
| MD5 |
bed1be26b10e5a9289f1b25973985691
|
|
| BLAKE2b-256 |
256abef06f67fe54b3162288a312d7d9440a8ec7fde37dbac10b99a6cee41982
|