Skip to main content

A Python logging handler that sends your logs to Splunk

Project description

# Splunk Handler

## Installation

Pip:

pip install splunk_handler

Manual:

python setup.py install

## Usage

from splunk_handler import SplunkHandler

Then use it like any other regular Python [logging handler](https://docs.python.org/2/howto/logging.html#handlers).

Example:

import logging
from splunk_handler import SplunkHandler

splunk = SplunkHandler(
host='splunk.example.com',
port='8089',
username='username',
password='password',
index='main'
#hostname='hostname', # manually set a hostname parameter, defaults to socket.gethostname()
#source='source', # manually set a source, defaults to the log record.pathname
#sourcetype='sourcetype', # manually set a sourcetype, defaults to 'text'
#verify=True # turn SSL verification on or off, defaults to True
)

logging.getLogger('').addHandler(splunk)

logging.warning('hello!')

I would recommend using a JSON formatter with this to receive your logs in JSON format.
Here is an open source one: https://github.com/madzak/python-json-logger

### Logging Config

Sometimes it's a good idea to create a logging configuration using a Python dict
and the `logging.config.dictConfig` function. This method is used by default in Django.

Here is an example dictionary config:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'json': {
'()': 'pythonjsonlogger.jsonlogger.JsonFormatter',
'format': '%(asctime)s %(created)f %(exc_info)s %(filename)s %(funcName)s %(levelname)s %(levelno)s %(lineno)d %(module)s %(message)s %(pathname)s %(process)s %(processName)s %(relativeCreated)d %(thread)s %(threadName)s'
}
},
'handlers': {
'splunk': {
'level': 'DEBUG',
'class': 'splunk_handler.SplunkHandler',
'formatter': 'json',
'host': SPLUNK_HOST,
'port': SPLUNK_PORT,
'username': SPLUNK_USERNAME,
'password': SPLUNK_PASSWORD,
'index': SPLUNK_INDEX,
'sourcetype': 'json'
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'json'
}
},
'loggers': {
'': {
'handlers': ['console', 'splunk'],
'level': 'DEBUG'
}
}
}

Then, do `logging.config.dictConfig(LOGGING)` to configure your logging.

Note: I included a configuration for the JSON formatter mentioned above.

## Contributing

Feel free to contribute an issue or pull request:

1. Check for existing issues and PRs
2. Fork the repo, and clone it locally
3. Create a new branch for your contribution
4. Push to your fork and submit a pull request

## License

This project is licensed under the terms of the [MIT license](http://opensource.org/licenses/MIT).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

splunk_handler-1.1.1.tar.gz (3.6 kB view details)

Uploaded Source

File details

Details for the file splunk_handler-1.1.1.tar.gz.

File metadata

File hashes

Hashes for splunk_handler-1.1.1.tar.gz
Algorithm Hash digest
SHA256 9160792b6a22a907974e3aecd78b0b461ba9ed6922b6cbe6412efe9c6d5c8bc9
MD5 2d5592fca6ec2d2bee74dc8f9f37ab27
BLAKE2b-256 9c15c84fea227b4b9b1ffbd9f77a01e0572c83fb8591d9d1daa4535c64fc4259

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page