Python, регистрирующий basicConfig к файлу и bash - PullRequest
0 голосов
/ 17 мая 2018

Как настроить базовую запись в журнал для записи в файл журнала, а также распечатать вывод на терминал?

Я использую basicConfig для настройки ведения журнала для модулей и субмодулей.

Проблема:Если я использую logging.basicConfig (filename = LOGFILE,…), то больше не будет вывод терминала из модуля логирования.Если я добавлю еще один FileHandler для файла журнала, он будет использоваться только основным модулем, а не субмодулями, например:

if __name__ == "__main__":
    logging.basicConfig(
        level=logging.DEBUG,
        format="%(name)s (%(lineno)s): %(message)s",
        filename=LOGFILE
        )
    # add logfile   
    formatter = logging.Formatter("%(name)s (%(lineno)s): %(message)s")
    logfile = logging.FileHandler(LOGFILE)
    logfile.setLevel("DEBUG")
    logfile.setFormatter(formatter)

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

Обновление

Простонайдено https://stackoverflow.com/a/13733863/1907997, но пример не работает, нет вывода на терминал или файл:

if __name__ == "__main__":
    logFormatter = "%(name)s (%(lineno)s): %(message)s"
    rootLogger = logging.getLogger()

    fileHandler = logging.FileHandler(LOGFILE)
    fileHandler.setFormatter(logFormatter)
    fileHandler.setLevel("DEBUG")

    rootLogger.addHandler(fileHandler)

    consoleHandler = logging.StreamHandler()
    consoleHandler.setFormatter(logFormatter)
    consoleHandler.setLevel("DEBUG")

    rootLogger.addHandler(consoleHandler)

Информация для более новой версии Python:

.Начиная с Python 3.3 logging.basicConfig () может принимать обработчики аргументов ключевых слов https://stackoverflow.com/a/46098711/1907997

1 Ответ

0 голосов
/ 17 мая 2018

Только что найдено решение:

logging.basicConfig(
    level=logging.DEBUG,
    format="%(asctime)s - %(name)s (%(lineno)s) - %(levelname)s: %(message)s",
    datefmt='%Y.%m.%d %H:%M:%S', 
    filename=LOGFILE
    )

rootLogger = logging.getLogger("")
logFormatter = logging.Formatter("%(asctime)s - %(name)s (%(lineno)s) - %(levelname)s: %(message)s")
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
consoleHandler.setLevel("DEBUG")
rootLogger.addHandler(consoleHandler)

найдено здесь: https://stackoverflow.com/a/23681578/1907997

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...