Добавление крючка для поиска в журнале elasti c - PullRequest
0 голосов
/ 04 мая 2020

Я хочу направить все свои журналы на поиск elasti c. В настоящее время все мои 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. Как я мог это сделать? Мне не хватило документации и примеров по этому поводу.

1 Ответ

1 голос
/ 04 мая 2020

Просто установите на свой сервер какое-нибудь программное обеспечение для анализа журналов.

Я рекомендую fluentd .

  • Это прочитает этот файл
  • Это разберусь так, как ты говоришь бегло. (используя регулярное выражение)
  • Он отправит elasti c поиск в каждой строке как документ.
...