Logger, который регистрирует в консоли и файл на разных уровнях - PullRequest
1 голос
/ 21 ноября 2019

У меня есть скрипт начальной загрузки для Raspberry Pi, который работает на python. Я ищу создать регистратор, который регистрирует как файл, так и консоль.

Я собирался сделать что-то вроде этого:

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s",
    handlers=[
        logging.FileHandler("{0}/{1}.log".format(logPath, fileName)),
        logging.StreamHandler()
    ])

Но то, что я действительно хотел бы, этовойти ИНФОРМАЦИЯ в StreamHandler и DEBUG в FileHandler ... Я не могу понять это.

Может ли кто-нибудь мне помочь?

Использование Python 3.7.5

1 Ответ

1 голос
/ 21 ноября 2019

Вы можете собрать регистратор самостоятельно (либо через файл конфигурации, либо на чистом python)

Хитрость, на которую я потратил несколько часов, - это забыть установить уровень ведения журнала как на регистраторе, так и накаждый из обработчиков. Убедитесь, что регистратор является таким же разрешающим, как и самый разрешающий обработчик.

пример сценария

# emits the info line to the console and
# both the info & debug lines to the log file

# test_pylog.py
import logging

log_format = logging.Formatter(
  '%(asctime)s %(threadName)s %(levelname)s %(message)s'
)

logger = logging.getLogger(__name__)

console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(log_format)

logger.addHandler(console_handler)

file_handler = logging.FileHandler('logfile.txt')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(log_format)

logger.addHandler(file_handler)
logger.setLevel(logging.DEBUG)
if __name__ == '__main__':
  logger.debug('Panic! at the disco')
  logger.info('Weezer')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...