Python3:记录没有被推到Splunk



我创建了一个自定义类,它将我的日志推送到splink,但不知怎么的,它不起作用。这是课。

class Splunk(logging.StreamHandler):
def __init__(self, url, token):
super().__init__()
self.url = url
self.headers = {f'Authorization': f'Splunk {token}'}
self.propagate = False
def emit(self, record):
mydata = dict()
mydata['sourcetype'] = 'mysourcetype'
mydata['event'] = record.__dict__
response = requests.post(self.url, data=json.dumps(mydata), headers=self.headers)
return response

我从我的logger类中调用该类,不知何故是这样的(添加额外的处理程序(,这样它就可以在控制台上与send-to-splunk 一起登录

if splunk_config is not None:
splunk_handler = Splunk(splunk_config["url"], splunk_config["token"])
self.default_logger.addHandler(splunk_handler)

但不知怎么的,我看不到任何日志在飞溅。虽然我可以在控制台中看到日志。当我尝试从python3终端运行上述逻辑的剥离版本时,它是成功的。

import requests
import json 
url = 'myurl'
token = 'mytoken'
headers = {'Authorization': 'Splunk mytoken'}
propagate = False
mydata = dict()
mydata['sourcetype'] = 'mysourcetype'
mydata['event'] = {'name': 'root', 'msg': 'this is a sample message'}
response = requests.post(url, data=json.dumps(mydata), headers=headers)
print(response.text)

我已经尝试过,使用下面的链接将我的字典数据序列化为JSON,但这并没有帮助。

https://pynative.com/make-python-class-json-serializable/

还有什么可以尝试的吗?

我已经成功地使用这个Python类将事件发送到Splunk HTTP事件收集器,而不是编写专用类

https://github.com/georgestarcher/Splunk-Class-httpevent

优点是它实现了batchEvent((和flushBatch((方法,可以在多个线程中同时提交多个事件。

这里的例子应该让你开始:

https://github.com/georgestarcher/Splunk-Class-httpevent/blob/master/example.py

如果这回答了您的问题,请花点时间接受答案。这可以通过点击答案旁边的复选标记来完成,将其从灰色切换为填写

相关内容

  • 没有找到相关文章

最新更新