import logging logging.basicConfig(**kwargs)
**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)
Вывод будет таким же, как и раньше, только сообщения от предыдущих запусков не сохраняются.