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