это код, который я сделал до сих пор:
import logging, os , json, inspect, sys
from logging import handlers
class StructuredMessage(object):
def __init__(self, **kwargs):
self.kwargs = kwargs
def __str__(self):
return '%s' % (json.dumps(self.kwargs))
def setup(self, file):
if(os.getenv('LOG_TO_FILE') == 'True'):
logging.basicConfig(filename='logs/'+file, format='%(levelname)s %(asctime)s %(message)s', filemode='a')
else:
logging.basicConfig(filename='logs/'+file, format='%(levelname)s %(asctime)s %(message)s', filemode='a')
logger = logging.getLogger()
def info(msg):
fun = StructuredMessage()
fun.setup('info.log')
logger.setLevel('INFO')
frame = ''.join(str(inspect.currentframe().f_back.f_code.co_filename))
lNo = ''.join(str(inspect.currentframe().f_back.f_code.co_firstlineno))
logging.info(StructuredMessage(msg=msg, file=frame+':'+lNo))
def error(msg):
fun = StructuredMessage()
fun.setup('exception.log')
logger.setLevel('ERROR')
frame = ''.join(str(inspect.currentframe().f_back.f_code.co_filename))
lNo = ''.join(str(inspect.currentframe().f_back.f_code.co_firstlineno))
logging.error(StructuredMessage(msg=msg, file=frame+':'+lNo))
То, чего я пытаюсь добиться, - это получить модуль, который при вызове функции информации (например) записывает сообщение в указанный файл в basicConfig.
Неправильно то, что когда я вызываю функцию ошибки, она записывает ошибку в файл info.log вместо файла exception.log, а файл info.log содержит оба сообщения.
Цель состоит в том, чтобы получить отдельные функции, информацию и ошибки, которые каждая из них записывает исключительно в указанный файл.
Что я делаю неправильно?