Конфигурация одного логгера независимот от остальных
У меня есть проект, там ведётся логгирование. Мне необходимо добавить ещё один логгер, которые будет сконфигурирован независимо от остальных (основное требование - независимые логи в отдельный фай). То есть что-то вроде:
import logging
logger_1 = logging.getLogger('Logger1')
logger_2 = logging.getLogger('Logger2')
STRING_FORMAT = '{name} {levelname:<8} > {msg}'
LEVEL = logging.DEBUG
logger_1.basicConfig(
level=LEVEL,
filename='errors.log',
filemode='a',
style='{',
format=STRING_FORMAT,
)
logger_1.error('Error from <logger 1>')
# Файл : Logger1 ERROR > Error from <logger 1>
logger_2.error('Error from <logger 2>')
# Консоль: Error from <logger 2>
logger_1.debug('Error from <logger 1>')
# Файл : Logger1 DEBUG > Debug from <logger 1>
При настройке logging.basicConfig у меня изменяются настройки всех остальных логгеров, и они тоже начинают писать в файл, а у отдельных логгеров нет этой настройки. Могу я и как настроить вывод одного из логгеров в другое место (а, желательно, формат и уровень тоже), не изменяя настроек других?
Ответы (1 шт):
Автор решения: Michael Tetelev
→ Ссылка
Код, который исправляет эту ситуацию:
import logging
def create_logger(name, file=None, format_=None, level=logging.INFO):
logger = logging.getLogger(name)
logger.setLevel(level)
if file is not None:
handler = logging.FileHandler(file)
handler.setFormatter(format_)
logger.addHandler(handler)
return logger
formatter = logging.Formatter('{name} {levelname:<8} > {msg}', style='{')
level = logging.DEBUG
logger_1 = create_logger('Logger1', 'errors.log', formatter, level)
logger_2 = create_logger('Logger2')
logger_1.error('Error from <logger 1>')
logger_2.error('Error from <logger 2>')
logger_1.debug('Error from <logger 1>')