Записать разный тип информации в 2 разных файла журнала на Python 3? - PullRequest
1 голос
/ 22 января 2020

У меня есть журналы использования и приложений. Я хочу записать журналы приложений в файл app.log и журналы использования в файл usage.log.

Вот как я пытался это сделать:

# Application Log:
logging.basicConfig(filename = "app.log", level = logging.DEBUG, format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# Usage Log:
logging.basicConfig(filename = "usage.log", level = logging.DEBUG, format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s")

По какой-то причине я надеваю не вижу созданный второй файл.

Посоветуйте, пожалуйста, что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 22 января 2020

добавить различные обработчики в регистратор по умолчанию:

import logging

def init_logging():
    logger = logging.getLogger()
    file_handler = logging.FileHandler('info.log')
    error_handler = logging.FileHandler('error.log')
    console_handler = logging.StreamHandler()
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    file_handler.setFormatter(formatter)
    console_handler.setFormatter(formatter)
    error_handler.setFormatter(formatter)
    error_handler.setLevel(logging.ERROR)
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)
    logger.addHandler(error_handler)
    logger.setLevel(logging.DEBUG)

# use
init_logging()
LOGGER = logging.getLogger()
LOGGER.info('abc')
0 голосов
/ 22 января 2020

Вот что решило мою проблему:

import logging
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')


def setup_logger(name, log_file, level=logging.INFO):
    """To setup as many loggers as you want"""

    handler = logging.FileHandler(log_file)        
    handler.setFormatter(formatter)

    logger = logging.getLogger(name)
    logger.setLevel(level)
    logger.addHandler(handler)

    return logger

# first file logger
logger = setup_logger('first_logger', 'first_logfile.log')
logger.info('This is just info message')

# second file logger
super_logger = setup_logger('second_logger', 'second_logfile.log')
super_logger.error('This is an error message')

def another_method():
   # using logger defined above also works here
   logger.info('Inside method')

Источник

...