forked from israel-fl/python3-logstash
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPKG-INFO
197 lines (150 loc) · 4.94 KB
/
PKG-INFO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
Metadata-Version: 1.1
Name: python3-logstash
Version: 0.4.73
Summary: Python logging handler for Logstash.
Home-page: https://github.com/israel-fl/python3-logstash
Author: Israel Flores
Author-email: [email protected]
License: UNKNOWN
Description: python3-logstash
python3-logstash
===================
Python logging handler for Logstash.
https://www.elastic.co/products/logstash
Notes:
=========
This is a copy of python3-logstash: https://pypi.python.org/pypi/python3-logstash
That has been update to work with python 3.
Installation
============
Using pip::
pip install python3-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('python3-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('python3-logstash: test logstash error message.')
test_logger.info('python3-logstash: test logstash info message.')
test_logger.warning('python3-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('python3-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('python3-logstash-logger')
test_logger.setLevel(logging.INFO)
test_logger.addHandler(logstash.AMQPLogstashHandler(host='localhost', version=1))
test_logger.info('python3-logstash: test logstash info message.')
try:
1/0
except:
test_logger.exception('python3-logstash-logger: Exception with stack trace!')
Using with Django
=================
Modify your ``settings.py`` to integrate ``python3-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,
},
},
...
}
Using with Gunicorn
===================
Create a logging.conf similar to this:
[loggers]
keys=root, logstash.error, logstash.access
[handlers]
keys=console , logstash
[formatters]
keys=generic, access, json
[logger_root]
level=INFO
handlers=console
[logger_logstash.error]
level=INFO
handlers=logstash
propagate=1
qualname=gunicorn.error
[logger_logstash.access]
level=INFO
handlers=logstash
propagate=0
qualname=gunicorn.access
[handler_console]
class=logging.StreamHandler
formatter=generic
args=(sys.stdout, )
[handler_logstash]
class=logstash.TCPLogstashHandler
formatter=json
args=('localhost',5959)
[formatter_generic]
format=%(asctime)s [%(process)d] [%(levelname)s] %(message)s
datefmt=%Y-%m-%d %H:%M:%S
class=logging.Formatter
[formatter_access]
format=%(message)s
class=logging.Formatter
[formatter_json]
class=jsonlogging.JSONFormatter
** Note that I am using the jsonlogging module to parse the gunicorn logs **
Sample Logstash Configuration:
==============================
``logstash.conf`` for Receiving Events from python3-logstash is::
input {
tcp {
port => 5000
codec => json
}
}
output {
stdout {
codec => rubydebug
}
}
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Logging