gpt4 book ai didi

python - 为 Elasticsearch 日志添加钩子(Hook)

转载 作者:行者123 更新时间:2023-12-03 01:18:05 25 4
gpt4 key购买 nike

我想将所有日志流式传输到 Elasticsearch 。目前,我所有的print日志写入 application.log文件如下图

import logging
import sys


class LogStream(object):

def __init__(self, logger, log_level = logging.INFO):
self.logger = logger
self.log_level = log_level
self.line = ""

def write(self, log_string):
self.logger.log(self.log_level, log_string)

def flush(self):
pass


# https://docs.python.org/2/library/logging.html#logging.basicConfig
# https://docs.python.org/3/howto/logging-cookbook.html
# https://docs.python.org/2/library/sys.html

logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s : %(levelname)s : %(message)s : %(name)s',
)

file_formatter=logging.Formatter(
'{"time":"%(asctime)s", "message": "%(message)s", "name": "%(name)s", \
"level": "%(levelname)s"}'
)


logger_name = ""
# Setup the info logger stream ##
info_file_handler=logging.FileHandler("application.log")
info_file_handler.setFormatter(file_formatter)
stdout_logger = logging.getLogger(logger_name)
stdout_logger.addHandler(info_file_handler)
sys.stdout = LogStream(stdout_logger, logging.INFO)

所以现在,如果我这样做:
print("Task A was completed")

它会在 application.log 中创建一个日志条目.我想添加一个钩子(Hook),这样当 print语句被调用,它还将日志流式传输到 elastic search .我怎么能这样做?我没有足够的文档和示例。

最佳答案

只需在您的服务器上安装一些日志解析软件。

我推荐fluentd .

  • 它将读取此文件
  • 它会按照你告诉 fluentd 的方式解析它。 (使用正则表达式)
  • 它会将每一行作为文档发送到 Elasticsearch 。
  • 关于python - 为 Elasticsearch 日志添加钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61584723/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com