Моя структура проекта выглядит следующим образом:
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