Сообщить об ошибке.

Функция basicConfig() модуля logging в Python

Базовая настройка логирования logging

Синтаксис:

import logging

logging.basicConfig(**kwargs)

Параметры:

Возвращаемое значение:

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

Описание:

Функция basicConfig() модуля logging выполняет базовую настройку системы ведения журнала, создав logging.StreamHandler() с logging.Formatter() по умолчанию и добавив его в корневой регистратор.

Функции logging.debug(), logging.info(), logging.warning(), logging.error() и logging.critical() будут автоматически вызывать logging.basicConfig(), если для корневого регистратора не определены другие обработчики.

Функция logging.basicConfig() ничего не делает, если в корневом логгере уже настроены обработчики. Если аргумент функции force=True, то любые существующие обработчики, подключенные к корневому регистратору, удаляются и закрываются перед выполнением конфигурации с новыми аргументами.

Примечание. Функцию logging.basicConfig() следует вызывать из основного потока перед запуском других потоков. В версиях до Python-3.2, если эта функция вызывается из нескольких потоков, в редких случаях возможно, что обработчик будет добавлен в корневой регистратор более одного раза, что приведет к неожиданным результатам, таким как дублирование сообщений в журнале.

Поддерживаемые ключевые аргументы **kwargs:

kwargОписание
filenameУказывает, что вместо `StreamHandler` должен быть создан `FileHandler` с использованием указанного имени файла.
filemodeЕсли указано имя файла, открывает файл в этом режиме. По умолчанию `а` - добавление записей в журнал.
formatИспользует указанную строку формата для обработчика.
datefmtИспользует указанный формат даты/времени, принятый в функции `time.strftime()`.
styleЕсли указан аргумент `format`, то использует этот стиль для строки формата. Один из '%', '{' или '$' для стиля форматирования `printf`, `str.format()` или `string.Template` соответственно. По умолчанию используется значение '%'.
levelУстанавливает уровень корневого регистратора на указанный уровень логирования.
streamИспользует указанный поток для инициализации `StreamHandler`. Обратите внимание, что этот аргумент несовместим с именем файла. Если присутствуют оба, то возникает `ValueError`.
handlersЕсли указано, то это должен быть итератор из уже созданных обработчиков для добавления в корневой регистратор `logger`. Любым обработчикам, у которых еще не установлен форматер, будет назначен форматер по умолчанию, созданный в этой функции. Обратите внимание, что этот аргумент несовместим с именем файла `filename` или потоком `stream`. Если присутствуют оба, возникает `ValueError`.
forceЕсли этот ключевой аргумент задан как `True`, то любые существующие обработчики, подключенные к корневому регистратору, удаляются и закрываются перед выполнением конфигурации с новыми аргументами.

Примеры:

Обратите внимание, что параметры logging.basicConfig() должны передаваться до первого вызова функций ведения журнала. Если в консоли интерпретатора уже была вызвана хотя бы одна функция, то необходимо перезагрузить пакет logging или выйти и снова зайти в консоль интерпретатора. С версии Python-3.8 для этой цели можно использовать ключевой аргумент force=True

>>> import logging
>>> logging.basicConfig(filename='example.log', level=logging.DEBUG)
>>> logging.debug('This message should go to the log file')
>>> logging.info('So should this')
>>> logging.warning('And this, too')

Теперь, если открыть файл example.log то можно увидеть сообщения журнала:

DEBUG:root:This message should go to the log file
INFO:root:So should this
WARNING:root:And this, too

В примере также показано, как можно установить уровень ведения журнала level, который служит порогом для отслеживания событий. Так как установлен уровень отображения событий level=logging.DEBUG, то в файл были записаны все сообщения.

Если запустить скрипт примера несколько раз, то сообщения от последовательных запусков добавляются в файл example.log. Если необходимо, чтобы каждый запуск удалял сообщения от предыдущих запусков, то можно указать аргумент filemode:

logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)

Вывод будет таким же, как и раньше, только сообщения от предыдущих запусков не сохраняются.