Python с использованием метода basicConfig для входа в консоль и файл

Я не знаю, почему этот код печатает на экране, но не в файл? Файл «example1.log» создан, но там ничего не написано.

#!/usr/bin/env python3 import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(message)s', handlers=[logging.FileHandler("example1.log"), logging.StreamHandler()]) logging.debug('This message should go to the log file and to the console') logging.info('So should this') logging.warning('And this, too') 

Я «обходил» эту проблему, создавая объект ведения журнала ( пример кода ), но он продолжает подслушивать меня, почему метод basicConfig () не прошел?

PS. Если я изменю вызов basicConfig, выполните следующие действия:

 logging.basicConfig(level=logging.DEBUG, filename="example2.log", format='%(asctime)s %(message)s', handlers=[logging.StreamHandler()]) 

Затем все журналы находятся в файле, и в консоли ничего не отображается

3 Solutions collect form web for “Python с использованием метода basicConfig для входа в консоль и файл”

Я не могу воспроизвести его на Python 3.3. Сообщения записываются как на экран, так и на 'example2.log' . На Python <3.3 он создает файл, но он пуст.

Код:

 from logging_tree import printout # pip install logging_tree printout() 

показывает, что FileHandler() не подключен к корневому журналу на Python <3.3.

Документы для logging.basicConfig() говорят, что аргумент handlers добавлен в Python 3.3. Аргумент handlers не упоминается в документации Python 3.2.

Попробуйте эту работу отлично (протестировано в python 2.7) для консоли и файла

 # set up logging to file logging.basicConfig( filename='twitter_effect.log', level=logging.INFO, format= '[%(asctime)s] {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s', datefmt='%H:%M:%S' ) # set up logging to console console = logging.StreamHandler() console.setLevel(logging.DEBUG) # set a format which is simpler for console use formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') console.setFormatter(formatter) # add the handler to the root logger logging.getLogger('').addHandler(console) logger = logging.getLogger(__name__) 

В приведенном ниже примере вы можете указать назначение журнала в зависимости от его уровня. Например, приведенный ниже код позволяет всем журналам через уровень INFO перейти в файл журнала, а все выше уровня ERROR – на консоль.

 import logging logging.root.handlers = [] logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO , filename='ex.log') # set up logging to console console = logging.StreamHandler() console.setLevel(logging.ERROR) # set a format which is simpler for console use formatter = logging.Formatter('%(asctime)s : %(levelname)s : %(message)s') console.setFormatter(formatter) logging.getLogger("").addHandler(console) logging.debug('debug') logging.info('info') logging.warning('warning') logging.error('error') logging.exception('exp') 
 
Interesting Posts for Van-Lav

Заготовка фляги с помощью Foreman

HTTP POST и GET с файлами cookie для аутентификации на python

Как установить python-ldap на python 2.7 virtualenv на windows без компиляции

Как работают классы python?

Ближайшие соседи в Питоне с учетом матрицы расстояния

Как получить python .pyd для Windows из исходного кода c / c ++? (обновление: теперь ожидание на Python, если это то, что вы хотите)

Модули перезагрузки процесса WSGI

В Python, как я могу получить правильно обведенный путь для файла?

Отбросить несколько столбцов в пандах

Создать staticmethod из существующего метода вне класса? (Ошибка «несвязанного метода»)

Если элемент случайного числа

Майя Python Создает и использует Zipped Package?

Как программно подсчитать количество файлов в архиве с помощью python

Чрезмерное взаимопревращение между многомерным и линейным индексированием

Вернуть True, если все символы в строке находятся в другой строке

Python - лучший язык программирования в мире.