Ведение журнала из нескольких модулей в один и тот же файл на основе обработчика функции вызывающей стороны - PullRequest
0 голосов
/ 08 ноября 2019

Моя структура проекта выглядит следующим образом:

app

functions.py

config

logging.conf

train.py

Forex.py

Модуль functions.py будет вызываться как из train.py, так и Foregnit. ру. Я настроил два logger 'train' и 'Forectne' в logging.conf

При вызове из train.py я хочу, чтобы журналы из functions.py переходили на logs / train.log .

При вызове из файла Предиката я хочу, чтобы журналы из functions.py перешли на logs / pred.log

Как мне этого добиться?

Содержимое файла выглядит следующим образом:

train.py

import logging.config
from app.functions import add

logging.config.fileConfig('config/logging.conf', disable_existing_loggers=False)
logger = logging.getLogger("train")

def run():
    logger.info("Handlers : {}".format(logger.handlers))
    logger.info("Logging from train.py...")
    sum = add(1, 3)
    return


if __name__ == '__main__':
    run()

Forex.py

import logging.config

logging.config.fileConfig('config/logging.conf', disable_existing_loggers=False)
logger = logging.getLogger("predict")
from app.functions import add


def run():
    logger.info("Handlers : {}".format(logger.handlers))
    logger.info("Logging from predict.py...")
    sum = add(1, 3)
    return


if __name__ == '__main__':
    run()

functions.py

import logging

logger = logging.getLogger(__name__)

def add(a, b):
    logger.info(logger.handlers)
    logger.info("Logging from functions...")
    logger.info("Adding a : {} and b : {}...".format(a, b))
    return a + b


def divide(a, b):
    return a / b

logging.conf

[loggers]
keys=root,train,predict

[handlers]
keys=consoleHandler, trainHandler, predHandler

[formatters]
keys=defaultFormatter

[logger_root]
level=INFO
handlers=consoleHandler

[logger_train]
level=INFO
handlers=trainHandler
propagate=1
qualname=train

[logger_predict]
level=INFO
handlers=predHandler
propagate=1
qualname=predict

[handler_trainHandler]
class=FileHandler
level=INFO
args=('logs/train.log', 'w')
formatter=defaultFormatter

[handler_predHandler]
class=FileHandler
level=INFO
args=('logs/pred.log', 'w')
formatter=defaultFormatter

[handler_consoleHandler]
class=logging.StreamHandler
formatter=defaultFormatter
args=(sys.stdout,)

[formatter_defaultFormatter]
format=%(levelname)s %(asctime)s %(filename)s %(lineno)d - %(message)s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...