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">
|
<module type="PYTHON_MODULE" version="4">
|
||||||
<component name="NewModuleRootManager">
|
<component name="NewModuleRootManager">
|
||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<sourceFolder url="file://$MODULE_DIR$/compLIB" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/compLib" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/compLib" isTestSource="false" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="jdk" jdkName="Python 3.8 (compLIB)" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="library" name="R User Library" level="project" />
|
<orderEntry type="library" name="R User Library" level="project" />
|
||||||
<orderEntry type="library" name="R Skeletons" level="application" />
|
<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"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<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>
|
</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