регистрация в Python - с помощью журналов JSON я могу добавить «дополнительное» значение в каждый отдельный журнал? - PullRequest
0 голосов
/ 01 февраля 2019

Я использую модуль python logging вместе с python-json-logger , и я хотел бы добавить несколько ключей:

{
  "app_name": "myapp",
  "env": "prod"
}

Для всех моих журналов автоматически без выполнения следующих действий.

logger.info("Something happened", extra={"app_name": "myapp", "env": "prod"})

Но для того, чтобы это работало, как если бы я имел.:)

1 Ответ

0 голосов
/ 01 февраля 2019

Я бы просто обернул основной класс ведения журнала нужной мне логикой, например, так:

import logging

class CustomLogger(object):
    def __init__(self, logger_name, log_format, extra=None):
        logging.basicConfig(format=log_format)
        self.logger = logging.getLogger(logger_name)
        self.extra = extra

    def debug(self, msg, *args, **kwargs):
        self.logger.debug(msg, *args, extra=self.extra, **kwargs)

    def info(self, msg, *args, **kwargs):
        self.logger.info(msg, *args, extra=self.extra, **kwargs)

    def warning(self, msg, *args, **kwargs):
        self.logger.warning(msg, *args, extra=self.extra, **kwargs)

    def error(self, msg, *args, **kwargs):
        self.logger.error(msg, *args, extra=self.extra, **kwargs)

Затем, где бы вам ни понадобился регистратор, создайте его из этого класса:

from custom_logging import CustomLogger

logger_name = 'my_logger'       
log_format = '%(asctime)-15s %(app_name)-8s %(env)-8s %(message)s'
extras = {"app_name": "myapp", "env": "prod"}

logger = CustomLogger(logger_name, log_format, extras)
logger.info('Testing it out')

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...