python-logstash
===============
Python logging handler for Logstash.
http://logstash.net/
Changelog
=========
0.4.8
- Fixed Python 3 issues with JSON serialization.
0.4.7
- Add couple of sensitive fields to the skip_list
0.4.6
- Updated field names to match java counterparts supported by logstash crew
0.4.5
- Allow passing exchange's routing key to AMQP handler
0.4.4
- Fixed urllib import python3 compatibility.
- Added long type to easy_types.
0.4.3
- Added AMQP handler.
0.4.2
- Updated README
- Added ``tags`` parameter to handler
0.4.1
- Added TCP handler.
0.3.1
- Added support for Python 3
0.2.2
- Split Handler into Handler and Formatter classes
0.2.1
- Added support for the new JSON schema in Logstash 1.2.x. See details in
http://tobrunet.ch/2013/09/logstash-1-2-0-upgrade-notes-included/ and
https://logstash.jira.com/browse/LOGSTASH-675
- Added ``version`` parameter. Available values: 1 (Logstash 1.2.x version format), 0 - default (previous version).
Installation
============
Using pip::
pip install python-logstash
Usage
=====
``LogstashHandler`` is a custom logging handler which sends Logstash messages using UDP.
For example::
import logging
import logstash
import sys
host = 'localhost'
test_logger = logging.getLogger('python-logstash-logger')
test_logger.setLevel(logging.INFO)
test_logger.addHandler(logstash.LogstashHandler(host, 5959, version=1))
# test_logger.addHandler(logstash.TCPLogstashHandler(host, 5959, version=1))
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('python-logstash: test extra fields', extra=extra)
When using ``extra`` field make sure you don't use reserved names. From `Python documentation <https://docs.python.org/2/library/logging.html>`_.
| "The keys in the dictionary passed in extra should not clash with the keys used by the logging system. (See the `Formatter <https://docs.python.org/2/library/logging.html#logging.Formatter>`_ documentation for more information on which keys are used by the logging system.)"
To use the AMQPLogstashHandler you will need to install pika first.
pip install pika
For example::
import logging
import logstash
test_logger = logging.getLogger('python-logstash-logger')
test_logger.setLevel(logging.INFO)
test_logger.addHandler(logstash.AMQPLogstashHandler(host='localhost', version=1))
test_logger.info('python-logstash: test logstash info message.')
try:
1/0
except:
test_logger.exception('python-logstash-logger: Exception with stack trace!')
Using with Django
=================
Modify your ``settings.py`` to integrate ``python-logstash`` with Django's logging::
LOGGING = {
...
'handlers': {
'logstash': {
'level': 'DEBUG',
'class': 'logstash.LogstashHandler',
'host': 'localhost',
'port': 5959, # Default value: 5959
'version': 1, # Version of logstash event schema. Default value: 0 (for backward compatibility of the library)
'message_type': 'logstash', # 'type' field in logstash message. Default value: 'logstash'.
'fqdn': False, # Fully qualified domain name. Default value: false.
'tags': ['tag1', 'tag2'], # list of tags. Default: None.
},
},
'loggers': {
'django.request': {
'handlers': ['logstash'],
'level': 'DEBUG',
'propagate': True,
},
},
...
}
Example Logstash Configuration
==============================
Example Logstash Configuration (``logstash.conf``) for Receiving Events from python-logstash is::
input {
udp {
port => 5959
codec => json
}
}
output {
stdout {
codec => rubydebug
}
}
For TCP input you need to change the logstash's input to ``tcp`` and modify django log handler's class to ``logstash.TCPLogstashHandler``
Raw data
{
"_id": null,
"home_page": "https://github.com/vklochan/python-logstash",
"name": "python-logstash",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "Volodymyr Klochan",
"author_email": "vklochan@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/f7/3b/c3a957bbdd23859f07905fc3d1adfe89957217a347478c58409f0315cf1d/python-logstash-0.4.8.tar.gz",
"platform": null,
"description": "python-logstash\n===============\n\nPython logging handler for Logstash.\nhttp://logstash.net/\n\nChangelog\n=========\n0.4.8\n - Fixed Python 3 issues with JSON serialization.\n0.4.7\n - Add couple of sensitive fields to the skip_list\n0.4.6\n - Updated field names to match java counterparts supported by logstash crew\n0.4.5\n - Allow passing exchange's routing key to AMQP handler\n0.4.4\n - Fixed urllib import python3 compatibility.\n - Added long type to easy_types.\n0.4.3\n - Added AMQP handler.\n0.4.2\n - Updated README\n - Added ``tags`` parameter to handler\n0.4.1\n - Added TCP handler.\n0.3.1\n - Added support for Python 3\n0.2.2\n - Split Handler into Handler and Formatter classes\n0.2.1\n - Added support for the new JSON schema in Logstash 1.2.x. See details in\n http://tobrunet.ch/2013/09/logstash-1-2-0-upgrade-notes-included/ and\n https://logstash.jira.com/browse/LOGSTASH-675\n\n - Added ``version`` parameter. Available values: 1 (Logstash 1.2.x version format), 0 - default (previous version).\n\n\nInstallation\n============\n\nUsing pip::\n\n pip install python-logstash\n\nUsage\n=====\n\n``LogstashHandler`` is a custom logging handler which sends Logstash messages using UDP.\n\nFor example::\n\n import logging\n import logstash\n import sys\n\n host = 'localhost'\n\n test_logger = logging.getLogger('python-logstash-logger')\n test_logger.setLevel(logging.INFO)\n test_logger.addHandler(logstash.LogstashHandler(host, 5959, version=1))\n # test_logger.addHandler(logstash.TCPLogstashHandler(host, 5959, version=1))\n\n test_logger.error('python-logstash: test logstash error message.')\n test_logger.info('python-logstash: test logstash info message.')\n test_logger.warning('python-logstash: test logstash warning message.')\n\n # add extra field to logstash message\n extra = {\n 'test_string': 'python version: ' + repr(sys.version_info),\n 'test_boolean': True,\n 'test_dict': {'a': 1, 'b': 'c'},\n 'test_float': 1.23,\n 'test_integer': 123,\n 'test_list': [1, 2, '3'],\n }\n test_logger.info('python-logstash: test extra fields', extra=extra)\n\nWhen using ``extra`` field make sure you don't use reserved names. From `Python documentation <https://docs.python.org/2/library/logging.html>`_.\n | \"The keys in the dictionary passed in extra should not clash with the keys used by the logging system. (See the `Formatter <https://docs.python.org/2/library/logging.html#logging.Formatter>`_ documentation for more information on which keys are used by the logging system.)\"\n\nTo use the AMQPLogstashHandler you will need to install pika first.\n\n pip install pika\n\nFor example::\n\n import logging\n import logstash\n\n test_logger = logging.getLogger('python-logstash-logger')\n test_logger.setLevel(logging.INFO)\n test_logger.addHandler(logstash.AMQPLogstashHandler(host='localhost', version=1))\n\n test_logger.info('python-logstash: test logstash info message.')\n try:\n 1/0\n except:\n test_logger.exception('python-logstash-logger: Exception with stack trace!')\n\n\n\nUsing with Django\n=================\n\nModify your ``settings.py`` to integrate ``python-logstash`` with Django's logging::\n\n LOGGING = {\n ...\n 'handlers': {\n 'logstash': {\n 'level': 'DEBUG',\n 'class': 'logstash.LogstashHandler',\n 'host': 'localhost',\n 'port': 5959, # Default value: 5959\n 'version': 1, # Version of logstash event schema. Default value: 0 (for backward compatibility of the library)\n 'message_type': 'logstash', # 'type' field in logstash message. Default value: 'logstash'.\n 'fqdn': False, # Fully qualified domain name. Default value: false.\n 'tags': ['tag1', 'tag2'], # list of tags. Default: None.\n },\n },\n 'loggers': {\n 'django.request': {\n 'handlers': ['logstash'],\n 'level': 'DEBUG',\n 'propagate': True,\n },\n },\n ...\n }\n\nExample Logstash Configuration\n==============================\n\nExample Logstash Configuration (``logstash.conf``) for Receiving Events from python-logstash is::\n\n input {\n udp {\n port => 5959\n codec => json\n }\n }\n output {\n stdout {\n codec => rubydebug\n }\n }\n\nFor TCP input you need to change the logstash's input to ``tcp`` and modify django log handler's class to ``logstash.TCPLogstashHandler``\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python logging handler for Logstash.",
"version": "0.4.8",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "e2cbc75dd5417cb55acaa3a12bf3afac",
"sha256": "d04e1ce11ecc107e4a4f3b807fc57d96811e964a554081b3bbb44732f74ef5f9"
},
"downloads": -1,
"filename": "python-logstash-0.4.8.tar.gz",
"has_sig": false,
"md5_digest": "e2cbc75dd5417cb55acaa3a12bf3afac",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7074,
"upload_time": "2022-03-30T11:58:04",
"upload_time_iso_8601": "2022-03-30T11:58:04.095551Z",
"url": "https://files.pythonhosted.org/packages/f7/3b/c3a957bbdd23859f07905fc3d1adfe89957217a347478c58409f0315cf1d/python-logstash-0.4.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-03-30 11:58:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "vklochan",
"github_project": "python-logstash",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "python-logstash"
}