为弹性搜索日志添加一个钩子

问题描述 投票:0回答:1

我想把我所有的日志流到弹性搜索。目前,我所有的 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. 我想添加一个钩子,这样当 print 语句被调用,它也会将日志流转到 elastic search. 我怎么能这样做呢?我不能足够的文档和例子围绕这一点。

python elasticsearch logging kibana elk
1个回答
1
投票

在你的服务器上安装一些日志解析软件即可。

我推荐 通顺.

  • 它将读取这个文件
  • 它将按照你告诉fluentd的方式进行解析。(使用regex)
  • 它将把每一行作为一个文档发送到弹性搜索。
© www.soinside.com 2019 - 2024. All rights reserved.