Add logstash logger
This commit is contained in:
parent
1b6fd1cfdf
commit
b2a085eab3
4 changed files with 80 additions and 4 deletions
3
.idea/compLIB.iml
generated
3
.idea/compLIB.iml
generated
|
@ -2,10 +2,9 @@
|
|||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/compLIB" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/compLib" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.8 (compLIB)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="R User Library" level="project" />
|
||||
<orderEntry type="library" name="R Skeletons" level="application" />
|
||||
|
|
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (compLIB)" project-jdk-type="Python SDK" />
|
||||
</project>
|
72
compLib/LogstashLogging.py
Normal file
72
compLib/LogstashLogging.py
Normal file
|
@ -0,0 +1,72 @@
|
|||
import logging
|
||||
import sys
|
||||
import requests
|
||||
|
||||
from logstash_async.transport import HttpTransport
|
||||
from logstash_async.handler import AsynchronousLogstashHandler
|
||||
|
||||
host = 'logs.robo4you.at'
|
||||
port = 443
|
||||
|
||||
logstash_logger = logging.getLogger('logstash')
|
||||
logstash_logger.setLevel(logging.INFO)
|
||||
|
||||
transport = HttpTransport(
|
||||
host,
|
||||
port,
|
||||
username="robo",
|
||||
password="competition",
|
||||
timeout=10.0,
|
||||
)
|
||||
|
||||
asynchronousLogstashHandler = AsynchronousLogstashHandler(
|
||||
host,
|
||||
port,
|
||||
transport=transport,
|
||||
database_path='logstash_test.db'
|
||||
)
|
||||
|
||||
class StreamToLogger(object):
|
||||
"""
|
||||
Fake file-like stream object that redirects writes to a logger instance.
|
||||
"""
|
||||
def __init__(self, log_level=logging.INFO):
|
||||
self.logger = logging.getLogger('logstash')
|
||||
self.console = sys.stdout
|
||||
self.log_level = log_level
|
||||
self.linebuf = ''
|
||||
|
||||
def write(self, buf):
|
||||
self.console.write(buf)
|
||||
temp_linebuf = self.linebuf + buf
|
||||
self.linebuf = ''
|
||||
for line in temp_linebuf.splitlines(True):
|
||||
if line[-1] == '\n':
|
||||
self.logger.log(self.log_level, line.rstrip())
|
||||
else:
|
||||
self.linebuf += line
|
||||
|
||||
def flush(self):
|
||||
self.console.flush()
|
||||
if self.linebuf != '':
|
||||
self.logger.log(self.log_level, self.linebuf.rstrip())
|
||||
self.linebuf = ''
|
||||
asynchronousLogstashHandler.flush()
|
||||
|
||||
try:
|
||||
requests.head(f"http://{host}:{port}")
|
||||
logstash_logger.addHandler(asynchronousLogstashHandler)
|
||||
|
||||
sl = StreamToLogger(logging.INFO)
|
||||
sys.stdout = sl
|
||||
|
||||
except requests.exceptions.ConnectionError as identifier:
|
||||
print(f"Could not connect to {host}!")
|
||||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1 +1,6 @@
|
|||
__version__ = "0.0.2"
|
||||
__version__ = "0.0.2"
|
||||
|
||||
import compLib.LogstashLogging
|
||||
import logging
|
||||
|
||||
print("Starting compLib...")
|
Reference in a new issue