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

Объект LogRecord модуля logging

Экземпляры logging.LogRecord создаются logging.Logger автоматически каждый раз, когда что-то регистрируется.

Объект logging.LogRecord содержит всю информацию, относящуюся к регистрируемому событию. Первичная информация передается в виде msg и args, которые объединяются с помощью msg % args для создания поля сообщения записи.

Атрибуты объекта LogRecord.

Объект LogRecord имеет ряд атрибутов, большинство из которых получены из параметров конструктора. Эти атрибуты можно использовать для объединения данных из записи в строку формата. В следующей таблице перечислены в алфавитном порядке имена атрибутов, их значения и соответствующий заполнитель при форматировании строки формата в стиле printf.

Если используется форматирование в стиле str.format(), то можно использовать фигурные скобки {attrname} в качестве заполнителя в строке формата. Если используется форматирование в стиле string.Template(), то можно использовать форму ${attrname}. В обоих случаях, заменяется attrname на фактическое имя атрибута, которое нужно использовать.

В случае форматирование в стиле str.format() можно указать флаги форматирования, поместив их после имени атрибута, отделенного от него двоеточием. Например: заполнитель {msecs: 03d} отформатирует значение миллисекунды, равное 4, как 004. Для получения полной информации о доступных опциях обратитесь к документации по функции str.format().

Имя
атрибута
ФорматОписание
argsНе нужно форматировать это самостоятельно.Кортеж аргументов объединяется в `msg` для создания сообщения или `dict`, значения которого используются для слияния (когда есть только один аргумент и это словарь).
asctime%(asctime)sУдобочитаемое время, когда был создан объект `LogRecord`. По умолчанию имеет вид `2003-07-08 16: 49: 45,896`. Числа после запятой - это доли миллисекунды.
created%(created)fВремя создания `LogRecord`, возвращаемое функцией `time.time()`.
exc_infoНе нужно форматировать это самостоятельно.Корректировка исключений как `sys.exc_info()` или `None`, если исключений не произошло.
filename%(filename)sЧасть пути имени файла.
funcName%(funcName)sИмя функции, содержащей вызов `logging`.
levelname%(levelname)sТекстовое значение уровня логирования ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL').
levelno%(levelno)sЧисловое значение уровня логирования (10, 20, 30, 40, 50).
lineno%(lineno)dНомер исходной строки, где был выполнен вызов (если имеется).
message%(message)sЗарегистрированное сообщение, вычисленное как `msg % args`. Это устанавливается при вызове `Formatter.format()`.
module%(module)sМодуль (часть имени файла).
msecs%(msecs)dМиллисекундная часть времени, когда был создан `LogRecord`.
msgНе нужно форматировать это самостоятельно.Строка формата, переданная в исходном вызове логгера. Объединяется с аргументами для создания сообщения или произвольного объекта.
name%(name)sИмя логгера, используемого для регистрации вызова.
pathname%(pathname)sПолный путь к исходному файлу, из которого был сделан вызов логгера (если имеется).
process%(process)dИдентификатор процесса (если имеется).
processName%(processName)sИмя процесса (если доступно).
relativeCreated%(relativeCreated)dВремя в миллисекундах, когда `LogRecord` был создан, относительно времени, когда был загружен модуль логирования `logging`.
stack_infoНе нужно форматировать это самостоятельно.Информация о стековом кадре (если она доступна) из нижней части стека в текущем потоке, вплоть до фрейма стека вызова логгера, который привел к созданию этой записи.
thread%(thread)dИдентификатор потока (если имеется).
threadName%(threadName)sИмя потока (если доступно).

Примеры:

Больше примеров смотрите в разделе "Продвинутое использование модуля logging в Python".

import logging

# создаем регистратор
logger = logging.getLogger('logger')
logger.setLevel(logging.DEBUG)

# создаем обработчик для файла и 
# установим уровень отладки
ch = logging.FileHandler('example.log')
ch.setLevel(logging.DEBUG)

# строка формата сообщения
strfmt = '[%(asctime)s] [%(name)s] [%(levelname)s] > %(message)s'
# строка формата времени
datefmt = '%Y-%m-%d %H:%M:%S'
# создаем форматтер
formatter = logging.Formatter(fmt=strfmt, datefmt=datefmt)

# добавляем форматтер к 'ch'
ch.setFormatter(formatter)
# добавляем ch в регистратор
logger.addHandler(ch)

# вызов функций, регистрирующих 
# события в коде
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

Запуск этого кода приведет к созданию файла 'example.log' с записями внутри:

[2020-06-08 07:42:59] [logger] [DEBUG] > debug message
[2020-06-08 07:42:59] [logger] [INFO] > info message
[2020-06-08 07:42:59] [logger] [WARNING] > warn message
[2020-06-08 07:42:59] [logger] [ERROR] > error message
[2020-06-08 07:42:59] [logger] [CRITICAL] > critical message