Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Coverage Status

TemLogger

Temlogger is a library to send logs to ELK, StackDriver(Google Cloud Logging).

Features

Temlogger gives you:

  • Flexibility to send logs to StackDriver(Google Cloud Logging) or ELK (Elastic, Logstash and Kibana).

  • Register events handlers(globally and per logger) to update log entry before send to providers.

  • 98% test coverage.

Logging Providers

  • logstash (ELK)

  • stackdriver (Google StackDriver)

  • default (don’t send logs)

Requirements

  • python 3.6+

  • python3-logstash == 0.4.80

  • google-cloud-logging>=1.14.0,<2

Instalation

pip install -e git+https://github.com/tembici/temlogger.git#egg=temlogger

Use this to specify tag version:

pip install -e git+https://github.com/tembici/temlogger.git@<tag-version>#egg=temlogger

Usage

Using environment variables:

export TEMLOGGER_PROVIDER='logstash'
export TEMLOGGER_URL='localhost'
export TEMLOGGER_PORT='5000'
export TEMLOGGER_ENVIRONMENT='staging'
import sys
import temlogger

test_logger = temlogger.getLogger('python-logstash-logger')

test_logger.error('python-logstash: test logstash error message.')
test_logger.info('python-logstash: test logstash info message.')
test_logger.warning('python-logstash: test logstash warning message.')

# add extra field to logstash message
extra = {
    'test_string': 'python version: ' + repr(sys.version_info),
    'test_boolean': True,
    'test_dict': {'a': 1, 'b': 'c'},
    'test_float': 1.23,
    'test_integer': 123,
    'test_list': [1, 2, '3'],
}
test_logger.info('temlogger: test with extra fields', extra=extra)

Example passing parameters directly to temlogger:

import sys
import temlogger

temlogger.config.set_provider('logstash')
temlogger.config.set_url('localhost')
temlogger.config.set_port(5000)
temlogger.config.set_environment('staging')

test_logger = temlogger.getLogger('python-logstash-logger')

test_logger.info('python-logstash: test logstash info message.')

# add extra field to logstash message
extra = {
    'test_string': 'python version: ' + repr(sys.version_info),
    'test_boolean': True,
    'test_dict': {'a': 1, 'b': 'c'},
    'test_float': 1.23,
    'test_integer': 123,
    'test_list': [1, 2, '3'],
}
test_logger.info('temlogger: test with extra fields', extra=extra)

Example with StackDriver

Documentation of how set ``GOOGLE_APPLICATION_CREDENTIALS` environment variable <https://cloud.google.com/docs/authentication/getting-started>`__

export TEMLOGGER_PROVIDER='stackdriver'
export GOOGLE_APPLICATION_CREDENTIALS='<path to json>'
import sys
import temlogger

test_logger = temlogger.getLogger('python-stackdriver-logger')

test_logger.info('python-stackdriver: test stackdriver info message.')

# add extra field to stackdriver message
extra = {
    'test_string': 'python version: ' + repr(sys.version_info),
    'test_boolean': True,
    'test_dict': {'a': 1, 'b': 'c'},
    'test_float': 1.23,
    'test_integer': 123,
    'test_list': [1, 2, '3'],
}
test_logger.info('temlogger: test with extra fields', extra=extra)

Using with Django

Modify your settings.py to integrate temlogger with Django’s logging:

import temlogger

host = 'localhost'

temlogger.config.set_provider('logstash')
temlogger.config.set_url('localhost')
temlogger.config.set_port(5000)
temlogger.config.set_environment('staging')

Then in others files such as views.py,models.py you can use in this way:

import temlogger

test_logger = temlogger.getLogger('python-logger')

Event Handlers

This functionality allow register handlers before send log to Logging Providers.

Register event handlers globally

Is recommended initialize event handlers early as possible, for example in settings.py for django. The below example shows how register a handler add_tracker_id_to_message globally.

import temlogger

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

logger = temlogger.getLogger('python-logger')

extra = {
    'app_name': 'tembici'
}

logger.info('test with extra fields', extra=extra)

Register event handlers per logger

The below example shows how register a handler add_user_id_key for one logger.

import temlogger

def add_user_id_key(message):
    message['user_id'] = 'User Id'
    return message

temlogger.config.set_provider('logstash')

logger = temlogger.getLogger('python-logger', event_handlers=[
    'temlogger.tests.base.add_tracker_id_to_message',
    add_user_id_key
])
extra = {
    'app_name': 'tembici'
}

logger.info('test with extra fields', extra=extra)

Metadata

Release files for temlogger-test 0.1.0b0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for temlogger-test 0.1.0b0
File Size Uploaded
temlogger-test-0.1.0b0.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for temlogger-test 0.1.0b0
File Interpreter ABI Platform
temlogger_test-0.1.0b0-py3-none-any.whl Python 3 none any Details

Total release size: 23.7 kB

Release files / temlogger-test-0.1.0b0.tar.gz

Download URL temlogger-test-0.1.0b0.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
05b4f8884f3810b1f8982afaa180f859c81f2f1e7e9a7624f69242cde2de7e03
BLAKE2b-256 checksum
How to use checksums
cd7eb88fcd33631dc1ccb40968ddff54ef6324ad41b4c78df8001820a999e273
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.5

Release files / temlogger_test-0.1.0b0-py3-none-any.whl

Download URL temlogger_test-0.1.0b0-py3-none-any.whl
Size 14.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c9597b5982479d92635137ee9f1df334b2d4ae118cfe5b0da1f455fd3a734070
BLAKE2b-256 checksum
How to use checksums
fd8fb166b14f5f7715f7e8adbbf1424964e45b974694645f0d67b2ca94a2584e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.5

Release history Release notifications | RSS feed

This release

0.1.0b0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page