logging.handlers
— Обработчики журналирования¶
Исходный код: Lib/logging/handlers.py
В пакете представлены следующие полезные обработчики. Обратите внимание, что три
из обработчиков (StreamHandler
, FileHandler
и NullHandler
) фактически определены в
самом модуле logging
, но задокументированы здесь вместе с другими
обработчиками.
StreamHandler¶
Класс StreamHandler
, расположенный в основном пакете logging
, посылает
вывод логирования в потоки, такие как sys.stdout, sys.stderr или любой
подобный файлу объект (или, более точно, любой объект, который поддерживает
write()
и методы flush()
).
-
class
logging.
StreamHandler
(stream=None)¶ Возвращает новую сущность класса
StreamHandler
. Если stream указано, то сущность будет использовать его для вывода логирование; в противном случае sys.stderr будет использоваться.-
emit
(record)¶ Если указан форматер, использовать форматированную запись. Запись затем записывается в поток с завершителем. Если информация об исключении присутствует, она форматируется с помощью
traceback.print_exception()
и добавляется к потоку.
-
flush
()¶ Очищает поток путем вызова метода
flush()
. Обратите внимание, что методclose()
наследуется отHandler
и поэтому не выводит, поэтому иногда может потребоваться явный вызовflush()
.
-
setStream
(stream)¶ Устанавливает поток сущность в указанный значение, если это отличается. Старый поток очищается перед установкой нового потока.
Параметры: stream – Поток, который должен использовать обработчик. Результат: Старый поток, если поток был изменен, или None если это не так.
Добавлено в версии 3.7.
-
Изменено в версии 3.2: У класса StreamHandler
теперь есть terminator
атрибут, значение '\n'
по умолчанию, который является используемый как завершитель, в записываемом
отформатированном отчете потоку. Если вы не хотите это newline завершение, вы
можете установить сущность terminator
атрибут обработчик в пустой
строка. В более ранних версиях завершитель был закодирован как '\n'
.
FileHandler¶
Класс FileHandler
, расположенный в основном пакете logging
, посылает
вывод логирования в дисковый файл. Он наследует функцию вывода от
StreamHandler
.
-
class
logging.
FileHandler
(filename, mode='a', encoding=None, delay=False)¶ Возвращает новую сущность класса
FileHandler
. Указанный файл открывается и используемый как поток для логирования. Если mode не указан, то'a'
является используемый. Если encoding не являетсяNone
, используемый открыть файл с этим кодировка. Если delay верен, то открытие файла отсрочено до первого требования кemit()
. По умолчанию файл растет бесконечно.Изменено в версии 3.6: Как и строка значения,
Path
объекты также принимаются для аргумента filename.-
close
()¶ Закрывает файл.
-
emit
(record)¶ Вывод записи в файл.
-
NullHandler¶
Добавлено в версии 3.1.
Класс NullHandler
, расположенный в основном пакете logging
, не делает никакого
форматирования или вывода. Это по существу обработчик „заглушка“ для
использования разработчиками библиотек.
-
class
logging.
NullHandler
¶ Возвращает новую сущность класса
NullHandler
.-
emit
(record)¶ Этот метод ничего не делает.
-
handle
(record)¶ Этот метод ничего не делает.
-
createLock
()¶ Этот возвращает
None
метода для блокировки, с тех пор есть не основной I/O, к которому должен быть преобразован в последовательную форму доступ.
-
Дополнительные сведения об использовании Настройка логирования для библиотеки см. в разделе NullHandler
.
WatchedFileHandler¶
Класс WatchedFileHandler
, расположенный в модуле logging.handlers
, является FileHandler
,
который смотрит файл, к которому он является логирование. Если файл изменяется,
он закрывается и открывается повторно с использованием имени файла.
Изменение файла может произойти из-за использования таких программ, как newsyslog и logrotate, которые выполняют ротацию файла журнала. Этот обработчик, предназначенный для использования в Unix/Linux, просматривает файл, чтобы узнать, изменился ли он с момента последнего выпуска. (Файл считается измененным, если его устройство или inode изменились.) если файл изменился, старый поток файлов закрывается, и файл открывается для получения нового потока.
Этот обработчик не подходит для использования в Windows, так как в Windows
открытые файлы журнала не могут быть перемещены или переименованы - логирование
открывает файлы с эксклюзивными блокировками - и поэтому нет необходимости в
такой обработчик. Кроме того, ST_INO не поддерживается в Windows;
stat()
всегда возвращает ноль для этого значения.
-
class
logging.handlers.
WatchedFileHandler
(filename, mode='a', encoding=None, delay=False)¶ Возвращает новую сущность класса
WatchedFileHandler
. Указанный файл открывается и используемый как поток для логирование. Если mode не указан, то'a'
является используемый. Если encoding не являетсяNone
, используемый открыть файл с этим кодировка. Если delay верен, то открытие файла отсрочено до первого требования кemit()
. По умолчанию файл растет бесконечно.Изменено в версии 3.6: Как и строка значения,
Path
объекты также принимаются для аргумента filename.-
reopenIfNeeded
()¶ Проверяет, изменился ли файл. Если он есть, существующий поток очищается и закрывается, и файл открывается снова, как правило, в качестве предшественника для вывода записи в файл.
Добавлено в версии 3.6.
-
emit
(record)¶ Выводит запись в файл, но сначала вызывает
reopenIfNeeded()
для повторного открытия файла, если он изменился.
-
BaseRotatingHandler¶
Класс BaseRotatingHandler
, расположенный в модуле logging.handlers
, является базовым классом
для вращающихся файлов обработчики, RotatingFileHandler
и TimedRotatingFileHandler
. Не нужно
создавать экземпляр этого класса, но он содержит атрибуты и методы, которые,
возможно, потребуется переопределить.
-
class
logging.handlers.
BaseRotatingHandler
(filename, mode, encoding=None, delay=False)¶ Параметры соответствуют параметрам
FileHandler
. К числу атрибуты относятся:-
namer
¶ Если для этого атрибута установлено значение вызываемое, то
translation_filename()
метод делегирует этот вызываемый. Параметры, передаваемые в вызываемую те, которые передаются вrotation_filename()
Примечание
Функция именования вызывается довольно много раз во время ролловера, поэтому она должна быть как можно более простой и быстрой. Это должно также возвращает тот же вывод каждый раз для данного входа, иначе поведение одновременного нажатия клавиш может не работать как ожидалось.
Добавлено в версии 3.3.
-
rotator
¶ Если для этого атрибута установлено значение вызываемое, метод
rotate()
делегаты на этот вызов. Параметры, передаваемые в вызываемую те, что переданыrotate()
.Добавлено в версии 3.3.
-
rotation_filename
(default_name)¶ Измените имени файла журнала при ротации.
Это обеспечивает возможность предоставления пользовательского имени файла.
Реализация по умолчанию вызывает атрибут „namer“ обработчик, если он является вызываемым, передавая ему имя по умолчанию. Если атрибут не подлежащий выкупу (дефолт -
None
), имя возвращенный неизменный.: param default_name: имя файла журнала по умолчанию.
Добавлено в версии 3.3.
-
rotate
(source, dest)¶ При ротации, ротировать текущий журнал.
Реализация по умолчанию вызывает атрибут rotator обработчик, если он является вызываемым, передавая ему аргументы source и dest. Если атрибут не подлежащий выкупу (дефолт -
None
), источник просто переименован к месту назначения.: param source: имя исходного файла. Обычно это основное имя файла, например «test.log».: param dest: имя файла назначения. Как правило, источник поворачивается, например «test.log.1».
Добавлено в версии 3.3.
-
Причина атрибуты существуют, состоит в том, чтобы спасти вас имеющий
необходимость к подкласс - вы можете использовать тот же вызываемый для
сущности RotatingFileHandler
и TimedRotatingFileHandler
. Если вызываемый модуль
namer или rotator вызывает исключение, оно будет обрабатываться таким же образом, как и любое
другое исключение во время вызова emit()
, т.е. с помощью метода обработчика
handleError()
.
Если необходимо внести более существенные изменения в обработку ротации, можно переопределить методами.
Пример см. в разделе Использование ротатора и имени для настройки обработки ротации журнала.
RotatingFileHandler¶
Класс RotatingFileHandler
, расположенный в модуле logging.handlers
, поддерживает ротацию
файлов журнала диска.
-
class
logging.handlers.
RotatingFileHandler
(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=False)¶ Возвращает новую сущность класса
RotatingFileHandler
. Указанный файл открывается и используемый как поток для логирование. Если mode не указан, то'a'
является используемый. Если encoding не являетсяNone
, используемый открыть файл с этим кодировка. Если delay верен, то открытие файла отсрочено до первого требования кemit()
. По умолчанию файл растет бесконечно.Можно использовать maxBytes и backupCount значения, чтобы разрешить rollover файла с заданным размером. Когда размер будет превышен, файл закрывается, и новый файл открывается для вывода. Ролловер происходит всякий раз, когда текущий файл журнала имеет почти maxBytes длину; но если или maxBytes или backupCount ноль, одновременное нажатие клавиш никогда не происходит, таким образом, вы обычно хотите установить backupCount по крайней мере в 1 и иметь отличный от нуля maxBytes. Когда backupCount будет отличным от нуля, система спасет старые файлы системного журнала, прилагая расширения „.1“, „.2“ и т.д., к имени файла. Например, с backupCount 5 и базовым именем файла
app.log
вы получитеapp.log
,app.log.1
,app.log.2
, доapp.log.5
. Записываемый файл всегда являетсяapp.log
. Когда этот файл заполняется, он закрывается и переименовывается вapp.log.1
, а если существуют файлыapp.log.1
,app.log.2
и т.д., то они переименовываются вapp.log.2
,app.log.3
и т.д. соответственно.Изменено в версии 3.6: Как и строка значения,
Path
объекты также принимаются для аргумента filename.-
doRollover
()¶ Выполняет ролловер, как описано выше.
-
emit
(record)¶ Вывод записи в файл, обеспечивающий ролловер, как описано выше.
-
TimedRotatingFileHandler¶
Класс TimedRotatingFileHandler
, расположенный в модуле logging.handlers
, поддерживает ротацию
файлов журнала диска через определенные промежутки времени.
-
class
logging.handlers.
TimedRotatingFileHandler
(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False, atTime=None)¶ Возвращает новую сущность класса
TimedRotatingFileHandler
. Указанный файл открывается и используемый как поток для логирование. При ротации он также задает суффикс имени файла. Ротация происходит на основе вывода when и interval.when можно использовать для определения типа interval. Список возможного значения ниже. Обратите внимание, что они не чувствительны к регистру.
Значение Тип интервала Если/как atTime используется 'S'
Секунды Игнорируется 'M'
Минуты Игнорируется 'H'
Часы Игнорируется 'D'
Дни Игнорируется 'W0'-'W6'
День недели (0=Понедельник) Используется для вычисления rначального времени ролловера 'midnight'
Перевернуть в полночь, если atTime не указано, в другое время atTime Используется для вычисления начального времени ролловера При использовании ротации на основе дня недели укажите „W0“ для понедельника, „W1“ для вторника и так далее до „W6“ для воскресенья. В этом случае значение, переданный для interval, не является используемый.
Система сохранит старые файлы журнала, добавив расширения к имени файла. Расширения основаны на дате и времени, используя формат strftime
%Y-%m-%d_%H-%M-%S
или его начальную часть, в зависимости от интервала'midnight'
.Вычисляя в следующий раз одновременного нажатия клавиш впервые (когда обработчик создан), прошлый раз модификации существующего файла системного журнала, или иначе текущее время, является используемый, чтобы вычислить, когда произойдет следующая ротация.
Если аргумент utc имеет значение true, время в UTC будет равно используемый; в противном случае локальная время является используемый.
Если значение backupCount не равно нулю, то сохраняются максимум файлы backupCount, и если при ролловер будет создано больше файлов, удаляется самый старый файл. Логика удаления использует интервал, чтобы определить, какие файлы следует удалить, поэтому изменение интервала может оставить старые файлы лежать рядом.
Если delay верен, то открытие файла отсрочено до первого требования к
emit()
.Если atTime не
None
, это должен бытьdatetime.time
сущность, который определяет время суток, когда одновременное нажатие клавиш происходит для случаев, где одновременное нажатие клавиш собирается произойти «в полночь» или «в особый рабочий день». Обратите внимание, что в этих случаях, atTime значение - эффективно используемый, чтобы вычислить одновременное нажатие клавиш initial, и последующие одновременные нажатия клавиш были бы вычислены через нормальное вычисление интервала.Примечание
Расчет начального времени ролловера выполняется при выполнении обработчиком инициализирован. Расчет последующих времен ролловер выполняется только при ролловер, а ролловер происходит только при выдаче выходных данных. Если это не учитывать, это может привести к некоторой путанице. Например, если установлен интервал «каждая минута», это не означает, что файлы журнала всегда будут отображаться с временем (в имени файла), разделенным минутой; если во время выполнения приложения выходные данные логирование генерируются чаще, чем один раз в минуту, then можно ожидать, что файлы журнала будут отображаться со временем, разделенным минутой. Если, с другой стороны, сообщения логирование выводятся только один раз в пять минут (скажем), то будут иметь место промежутки во времени файла, соответствующие минутам, где не было вывода (и, следовательно, не было ролловера).
Изменено в версии 3.4: atTime добавлен параметр.
Изменено в версии 3.6: Как и строка значения,
Path
объекты также принимаются для аргумента filename.-
doRollover
()¶ Выполняет ролловер, как описано выше.
-
emit
(record)¶ Вывод записи в файл, обеспечивающий ролловер, как описано выше.
-
SocketHandler¶
Класс SocketHandler
, расположенный в модуле logging.handlers
, посылает вывод
логирование в сеть сокет. Базовый класс использует TCP сокет.
-
class
logging.handlers.
SocketHandler
(host, port)¶ Возвращает новую сущность класса
SocketHandler
, предназначенный для связи с удаленным компьютером, адрес которого определяется host и port.Изменено в версии 3.4: Если
port
определен какNone
, область Unix, сокет создан, используя значение вhost
- иначе, TCP сокет создан.-
close
()¶ Закрывает сокет.
-
emit
()¶ Подсвечивает словарь атрибут записи и записывает его в сокет в двоичном формате. Если произошла ошибка с сокет, автоматически отбрасывает пакет. Если соединение было ранее потеряно, восстановите соединение. Для распаковки записи на приемной стороне в
LogRecord
используйте функциюmakeLogRecord()
.
-
handleError
()¶ Обрабатывает ошибку, возникшую во время
emit()
. Наиболее вероятной причиной является потеря соединения. Закрывает сокет так, чтобы мы могли повторить на следующем событии.
-
makeSocket
()¶ Это метод фабрика, который позволяет подклассы определить точный тип сокета, которые они хотят. Внедрение по умолчанию создает TCP сокет (
socket.SOCK_STREAM
).
-
makePickle
(record)¶ Pickles словарь отчета атрибут в двоичном формате с префиксом длины и возвращает это готовый к передаче через сокет. Подробности этой операции эквивалентны:
data = pickle.dumps(record_attr_dict, 1) datalen = struct.pack('>L', len(data)) return datalen + data
Обратите внимание, что соленые огурцы не совсем безопасны. Если вас беспокоит безопасность, возможно, потребуется переопределить этот метод, чтобы реализовать более безопасный механизм. Например, можно подписать соленые огурцы с помощью HMAC, а затем проверить их на принимающей стороне, или можно отключить отключение глобальных объектов на принимающей стороне.
-
send
(packet)¶ Отправьте pickled байтовую-строку packet в сокет. Формат посланного байтовой-строки как описан в документации для
makePickle()
.Эта функция позволяет осуществлять частичную передачу, которая может произойти при занятости сети.
-
createSocket
()¶ Пытается создать сокет; при сбое использует алгоритм экспоненциального возврата. При первоначальном сбое обработчик отбросит сообщение, которое он пытался отправить. Когда последующие сообщения обрабатываются одним и тем же сущность, он не будет пытаться подключиться до тех пор, пока не пройдет некоторое время. Параметры по умолчанию таковы, что начальная задержка составляет одну секунду, и если после этой задержки соединение все еще не может быть установлено, обработчик удвоит задержку каждый раз максимум до 30 секунд.
Это поведение контролируется следующими атрибутами обработчика:
retryStart
(начальная задержка, значение по умолчанию - 1.0 секунды).retryFactor
(множитель, значение по умолчанию 2.0).retryMax
(максимальная задержка, значение по умолчанию 30.0 секунды).
Это означает, что, если удаленный слушатель запускает after, обработчик был используемый, вы могли бы потерять сообщения (так как обработчик не будет даже делать попытку связи, пока задержка не протекла, но просто тихо пропускает сообщения в период задержки).
-
DatagramHandler¶
Класс DatagramHandler
, расположенный в модуле logging.handlers
, наследует SocketHandler
, чтобы поддержать отправку сообщений логирование по UDP сокетам.
-
class
logging.handlers.
DatagramHandler
(host, port)¶ Возвращает новую сущность класса
DatagramHandler
, предназначенный для связи с удаленным компьютером, адрес которого определяется host и port.Изменено в версии 3.4: Если
port
указан какNone
, сокет домена Unix создается с помощью значение inhost
- в противном случае создается сокет UDP.-
emit
()¶ Подсвечивает словарь атрибут записи и записывает его в сокет в двоичном формате. Если произошла ошибка с сокет, автоматически отбрасывает пакет. Для распаковки записи на приемной стороне в
LogRecord
используйте функциюmakeLogRecord()
.
-
makeSocket
()¶ Метод фабрика
SocketHandler
здесь переопределяется, чтобы создать UDP сокет (socket.SOCK_DGRAM
).
-
send
(s)¶ Отправить pickled байтовую-строку в сокет. Формат посланного байта-строка как описан в документации для
SocketHandler.makePickle()
.
-
SysLogHandler¶
Класс SysLogHandler
, расположенный в модуле logging.handlers
, поддерживает отправку
сообщений логирование удаленному или локальному системному журналу Unix.
-
class
logging.handlers.
SysLogHandler
(address=('localhost', SYSLOG_UDP_PORT), facility=LOG_USER, socktype=socket.SOCK_DGRAM)¶ Возвращает новую сущность класса
SysLogHandler
, предназначенный для связи с удаленной Unix-машиной, адрес которой задается address в виде кортежа(host, port)
. Если address не указан, то('localhost', 514)
является используемый. Адрес используемый для открытия сокет. Альтернатива обеспечению кортежа(host, port)
обеспечивает адрес как строка, например, „/dev/log“. В этом случае доменный Unix сокет является используемый, чтобы послать сообщение в системный журнал. Если facility не указан, тоLOG_USER
является используемый. Тип открываемой сокет зависит от аргумента socktype, который по умолчанию имеет значениеsocket.SOCK_DGRAM
и, таким образом, открывает сокет UDP. Чтобы открыть TCP сокет (для использования с более новыми демонами системного журнала, такими как rsyslog), определите значениеsocket.SOCK_STREAM
.Обратите внимание, что если сервер не прослушивает UDP-порт 514, возможно,
SysLogHandler
не работает. В этом случае проверьте, какой адрес следует использовать для доменного сокета - это зависит от системы. Например, в Linux это обычно „/dev/log „, а в OS/X - „/var/run/syslog“. Вам потребуется проверить свою платформу и использовать соответствующий адрес (возможно, вам потребуется выполнить эту проверку во время выполнения, если приложение должно работать на нескольких платформах). В Windows вы должны использовать параметр UDP.Изменено в версии 3.2: Был добавлен socktype.
-
close
()¶ Закрывает сокет на удаленном узле.
-
emit
(record)¶ Запись форматируется, а затем отправляется на сервер системного журнала. Если информация об исключении присутствует, она не отправляется на сервер.
Изменено в версии 3.2.1: (См.: bpo-12168.) в более ранних версиях сообщение, отправленное демонам системного журнала, всегда завершалось байтом NUL, поскольку ранние версии этих демонов ожидали сообщения, завершенного NUL, несмотря на то, что его нет в соответствующей спецификации (RFC 5424). Более поздние версии этих демонов не ожидают байта NUL, но отключают его, если он там есть, и даже более поздние демоны (которые более тесно придерживаются RFC 5424) передают байт NUL в качестве части сообщения.
Чтобы облегчить обработку сообщений системного журнала перед лицом всех этих различий в поведении демонов, добавление байта NUL стало конфигурируемым посредством использования атрибут уровня класса,
append_nul
. Это не выполняет своих обязательств кTrue
(сохраняющий существующее поведение), но может быть установлено вFalse
наSysLogHandler
сущность для того сущность к not, прилагают терминатора NUL.Изменено в версии 3.3: (См.: bpo-12419.) в более ранних версиях не было средства для префикса «ident» или «tag» для идентификации источника сообщения. Это может теперь быть определено, используя уровень класса атрибут, не выполнив своих обязательств к
""
, чтобы сохранить существующее поведение, но который может быть переопределяется наSysLogHandler
сущность для того сущность, чтобы предварительно ожидать ident к каждому обработанному сообщению. Обратите внимание, что предоставленный идентификатор должен быть текстовым, а не байтовым и добавляется к сообщению точно так, как есть.
-
encodePriority
(facility, priority)¶ Кодирование средство и приоритет в целое число. Вы можете передать в строки или целые числа - если строки переданы, внутренние словари сопоставления являются используемый, чтобы преобразовать их в целые числа.
Символьные
LOG_
значения определяются вSysLogHandler
и отражают значения, определенные в заголовочном файлеsys/syslog.h
.Приоритеты
Имя (строка) Символическое значение alert
LOG_ALERT crit
илиcritical
LOG_CRIT debug
LOG_DEBUG emerg
илиpanic
LOG_EMERG err
илиerror
LOG_ERR info
LOG_INFO notice
LOG_NOTICE warn
илиwarning
LOG_WARNING Средства
Имя (строка) Символическое значение auth
LOG_AUTH authpriv
LOG_AUTHPRIV cron
LOG_CRON daemon
LOG_DAEMON ftp
LOG_FTP kern
LOG_KERN lpr
LOG_LPR mail
LOG_MAIL news
LOG_NEWS syslog
LOG_SYSLOG user
LOG_USER uucp
LOG_UUCP local0
LOG_LOCAL0 local1
LOG_LOCAL1 local2
LOG_LOCAL2 local3
LOG_LOCAL3 local4
LOG_LOCAL4 local5
LOG_LOCAL5 local6
LOG_LOCAL6 local7
LOG_LOCAL7
-
mapPriority
(levelname)¶ Наносит на карту имя уровня логирование к приоритетному имени системного журнала. Это может потребоваться переопределить, если вы используете пользовательские уровни или если алгоритм по умолчанию не подходит для ваших нужд. Алгоритм по умолчанию сопоставляет
DEBUG
,INFO
,WARNING
,ERROR
иCRITICAL
с эквивалентными именами системного журнала, а все другие имена уровней - с предупреждением.
-
NTEventLogHandler¶
Класс NTEventLogHandler
, расположенный в модуле logging.handlers
, поддержки, посылающие
сообщения логирование в локальная Windows NT, Windows 2000 или журнал событий
Windows XP. Прежде чем вы сможете использовать его, вам нужны расширения Mark Hammond’а
Win32 для установленного Python.
-
class
logging.handlers.
NTEventLogHandler
(appname, dllname=None, logtype='Application')¶ Возвращает новую сущность класса
NTEventLogHandler
. appname - используемый, чтобы определить имя приложения, как это появляется в конечном счете регистрация. С помощью этого имени создается соответствующая запись реестра. dllname должен дать полное имя пути .dll или .exe, которое содержит определения сообщений для хранения в журнале (если не указано, то'win32service.pyd'
используемый - это устанавливается с расширениями Win32 и содержит некоторые основные определения местозаполнителя сообщения. Обратите внимание, что использование этих местозаполнителей сделает ваши журналы событий большими, так как весь источник сообщений хранится в журнале. Если вы хотите более тонкие журналы, вы должны передать имя собственного .dll или .exe, которое содержит определения сообщений, которые вы хотите использовать в журнале событий). Параметр logtype является одним из'Application'
,'System'
или'Security'
и по умолчанию имеет значение'Application'
.-
close
()¶ На этом этапе можно удалить имя приложения из реестра в качестве источника записей журнала событий. Однако в этом случае вы не сможете видеть события так, как это предполагалось в средстве просмотра журналов событий. Для получения имени .dll необходимо иметь доступ к реестру. Текущая версия этого не делает.
-
emit
(record)¶ Определяет идентификатор сообщения, категорию события и тип события, а затем записывает сообщение в журнал событий NT.
-
getEventCategory
(record)¶ Возвращает категорию события для записи. Переопределите этот параметр, если требуется указать собственные категории. Эта версия возвращает 0.
-
getEventType
(record)¶ Возвращает тип события для записи. Переопределите этот параметр, если требуется указать собственные типы. Эта версия делает отображение, используя typemap атрибут обработчик, который настроен в
__init__()
к словарю, который содержит отображения дляDEBUG
,INFO
,WARNING
,ERROR
иCRITICAL
. При использовании собственных уровней необходимо либо переопределить этот метод, либо поместить подходящий словарь в typemap атрибут обработчик.
-
getMessageID
(record)¶ Возвращает идентификатор сообщения для записи. Если вы используете собственные сообщения, вы можете сделать это, передав msg логгер идентификатор, а не формат строка. Затем здесь можно использовать словарный поиск для получения идентификатора сообщения. Эта версия возвращает 1, которая является базовым идентификатором сообщения в
win32service.pyd
.
-
SMTPHandler¶
Класс SMTPHandler
, расположенный в модуле logging.handlers
, поддерживает отправку
сообщений логирование на адрес электронной почты через SMTP.
-
class
logging.handlers.
SMTPHandler
(mailhost, fromaddr, toaddrs, subject, credentials=None, secure=None, timeout=1.0)¶ Возвращает новую сущность класса
SMTPHandler
. Сущность инициализируется с адресами от и до и строкой темы сообщения электронной почты. В качестве toaddrs должен выступать список строки. Чтобы указать нестандартный SMTP-порт, используйте формат кортежа (узел, порт) для аргумента mailhost. Если вы используете строка, стандартный порт SMTP - используемый. Если SMTP- сервер требует проверки подлинности, можно указать кортеж (имя пользователя, пароль) для аргумента credentials.Чтобы указать использование защищенного протокола (TLS), передайте кортеж аргументу secure. Это будет используемый только при предоставлении учетных данных проверки подлинности. Кортеж должен быть или пустым кортежем, или единственным-значение кортежем с названием keyfile или 2-значение кортежем с названиями файла сертификата и ключевого файла. (Этот кортеж передается методу
smtplib.SMTP.starttls()
.)Время ожидания может быть указано для связи с SMTP-сервером с помощью аргумента timeout.
Добавлено в версии 3.3: Добавлен аргумент timeout.
-
emit
(record)¶ Форматирует запись и отправляет ее указанным адресатам.
-
getSubject
(record)¶ Если требуется указать строку темы, зависящую от записи, переопределите этот метод.
-
MemoryHandler¶
Класс MemoryHandler
, расположенный в модуле logging.handlers
, поддерживает буферизацию
записей логирование в памяти, периодически сбрасывая их до target
обработчик. Промывка происходит всякий раз, когда буфер заполнен или когда
наблюдается событие определенной или большей степени серьезности.
MemoryHandler
является подкласс более общего BufferingHandler
, который является
абстрактным классом. Это буферизирует записи логирование в памяти. Всякий раз,
когда каждая запись добавляется в буфер, выполняется проверка путем вызова
метода «shouldFlush()
» на предмет необходимости очистки буфера. Если он должен, то
ожидается, что flush()
сделает промывку.
-
class
logging.handlers.
BufferingHandler
(capacity)¶ Инициализирует обработчик с буфером указанной емкости. Здесь capacity означает количество буферизованных записей логирования.
-
emit
(record)¶ Добавить запись в буфер. Если значение
shouldFlush()
возвращает true, вызовите функциюflush()
для обработки буфера.
-
flush
()¶ Это можно переопределить, чтобы реализовать пользовательское поведение очистки. Эта версия просто заполняет буфер.
-
shouldFlush
(record)¶ Возвращает
True
, если буфер не превышает емкость. Этот метод можно переопределить для реализации пользовательских стратегий очистки.
-
-
class
logging.handlers.
MemoryHandler
(capacity, flushLevel=ERROR, target=None, flushOnClose=True)¶ Возвращает новую сущность класса
MemoryHandler
. Сущность инициализируется с размером буфера capacity (количество буферизованных записей). Если flushLevel не указан, то используетсяERROR
. Если target не указан, целевой объект должен быть задан с помощьюsetTarget()
, прежде чем этот обработчик сделает что-либо полезное. Если flushOnClose указан какFalse
, то буфер not очищается при закрытии обработчик. Если не определенный или определенный какTrue
, предыдущее поведение смывания буфера произойдет, когда обработчик будет закрыт.Изменено в версии 3.6: Добавлен параметр flushOnClose.
-
flush
()¶ Для
MemoryHandler
промывка означает просто отправку буферизованных записей целевому объекту, если таковая имеется. При этом буфер также очищается. Переопределить, если требуется другое поведение.
-
setTarget
(target)¶ Задает целевой обработчик для этого обработчика.
-
shouldFlush
(record)¶ Проверка переполненности буфера или записи в flushLevel или выше.
-
HTTPHandler¶
Класс HTTPHandler
, расположенный в модуле logging.handlers
, поддерживает отправку
сообщений логирование на веб-сервер с использованием семантики GET
или
POST
.
-
class
logging.handlers.
HTTPHandler
(host, url, method='GET', secure=False, credentials=None, context=None)¶ Возвращает новую сущность класса
HTTPHandler
. host может иметь формуhost:port
, должны, вы должны использовать определенный номер порта. Если method не указан, то используетсяGET
. Если secure будет true, то связь HTTPS будет используемый. Параметр context может быть установлен наssl.SSLContext
сущность, чтобы настроить параметры настройки SSL используемый для связи HTTPS. Если credentials определен, это должен быть с 2 кортежами, состоящий из userid и пароля, который будет помещен в заголовок „Разрешения“ HTTP, используя базовую аутентификацию. При указании учетных данных необходимо также указать secure = True, чтобы не передавать код пользователя и пароль через провод.Изменено в версии 3.5: Добавлен параметр context.
-
mapLogRecord
(record)¶ Предоставляет словарь на основе
record
, который должен быть URL-кодированный и отправлен на веб-сервер. Реализация по умолчанию только возвращаетrecord.__dict__
. Этот метод может быть переопределен, если, например, на веб-сервер должно быть отправлено только подмножествоLogRecord
или если требуется более конкретная настройка того, что отправлено на сервер.
-
emit
(record)¶ Отправляет запись на веб-сервер в виде словаря URL-кодированный. Метод
mapLogRecord()
- используемый, чтобы преобразовать отчет в словарь, который пошлют.
Примечание
Так как подготовка записи для отправки на веб-сервер не является то же, что и операция универсального форматирования, использование
setFormatter()
для указанияFormatter
дляHTTPHandler
не имеет эффекта. Вместо того, чтобы назватьformat()
, этот обработчик называетmapLogRecord()
и затемurllib.parse.urlencode()
, чтобы закодировать словарь в форме, подходящей для отправки в веб-сервер.-
QueueHandler¶
Добавлено в версии 3.2.
Класс QueueHandler
, расположенный в модуле logging.handlers
, поддерживает отправку
сообщений логирование в очередь, например, реализованных в модулях queue
или multiprocessing
.
Наряду с классом QueueListener
, QueueHandler
может быть используемый, чтобы
позволить обработчики сделать их работу над отдельным поток от того,
который делает логирование. Это важно в веб-приложениях, а также в других
сервисных приложениях, где клиенты обслуживания потоки должны реагировать
как можно быстрее, в то время как любые потенциально медленные операции
(например, отправка электронной почты через SMTPHandler
) выполняются на
отдельном потоке.
-
class
logging.handlers.
QueueHandler
(queue)¶ Возвращает новую сущность класса
QueueHandler
. сущность инициализируется очередью для отправки сообщений. queue может быть любым объектом, похожим на очередь; это используемый как есть методомenqueue()
, который должен знать, как отправлять ему сообщения. Очередь не required иметь API отслеживания задач, что означает, что вы можете использоватьSimpleQueue
сущности для queue.-
emit
(record)¶ Ставит в очередь результат подготовки LogRecord. Если возникает исключение (например, из-за заполнения ограниченной очереди), вызывается метод
handleError()
для обработки ошибки. Это может привести к бесшумному удалению записи (еслиlogging.raiseExceptions
False
) или к печати сообщения наsys.stderr
(еслиlogging.raiseExceptions
-True
).
-
prepare
(record)¶ Готовит запись для постановки в очередь. Объект, возвращенный этим методом, ставится в очередь.
Базовая реализация форматирует запись для объединения сообщения, аргументов и информации об исключении, если она имеется. Кроме того, она удаляет элементы, которые можно удалить, из записи на месте.
Вы могли бы хотеть переопределить этот метод, если вы хотите преобразовать отчет в словарь или JSON строка, или послать измененную копию отчета, оставляя оригинал неповрежденным.
-
enqueue
(record)¶ Ставит в очередь запись с помощью
put_nowait()
; это можно переопределить, если требуется использовать блокирующее поведение, тайм-аут или настраиваемую реализацию очереди.
-
QueueListener¶
Добавлено в версии 3.2.
Класс QueueListener
, расположенный в модуле logging.handlers
, поддерживает прием
сообщений логирование из очереди, например, реализованных в модулях queue
или multiprocessing
. Сообщения принимаются из очереди во внутреннем поток и
передаются на том же самом поток одному или нескольким обработчики для
обработки. Хотя QueueListener
сам по себе не является обработчик, он
документирован здесь, потому что работает рука об руку с QueueHandler
.
Наряду с классом QueueHandler
, QueueListener
может быть используемый, чтобы
позволить обработчики сделать их работу над отдельным поток от того,
который делает логирование. Это важно в веб-приложениях, а также в других
сервисных приложениях, где клиенты обслуживания потоки должны реагировать
как можно быстрее, в то время как любые потенциально медленные операции
(например, отправка электронной почты через SMTPHandler
) выполняются на
отдельном поток.
-
class
logging.handlers.
QueueListener
(queue, *handlers, respect_handler_level=False)¶ Возвращает новую сущность класса
QueueListener
. сущность инициализируется очередью для отправки сообщений и списком обработчики, которые будут обрабатывать записи, помещенные в очередь. Очередью может быть любой объект, похожий на очередь; он передается как есть методуdequeue()
, который должен знать, как получать сообщения от него. Очередь не required иметь API отслеживания задач (хотя он используемый, если доступен), что означает, что вы можете использоватьSimpleQueue
сущности для queue.Если
respect_handler_level
являетсяTrue
, уровень обработчик соблюдается (по сравнению с уровнем сообщения) при принятии решения о том, следует ли передавать сообщения этому обработчик; иначе поведение как в предыдущих версиях Python - чтобы всегда передать каждое сообщение к каждому обработчик.Изменено в версии 3.5: Добавлен аргумент
respect_handler_level
.-
dequeue
(block)¶ Dequeeues запись и возвращает ее, опционально блокируя.
Базовая реализация использует
get()
. Можно переопределить этот метод, если требуется использовать тайм-ауты или работать с пользовательскими реализациями очереди.
-
prepare
(record)¶ Подготовьте запись для обработки.
Эта реализация только что возвращает сданную запись. Этот метод может потребоваться переопределить, если требуется выполнить пользовательскую сортировку или манипуляцию записью перед ее передачей обработчики.
-
handle
(record)¶ Обращайтесь с отчетом.
Это просто петляет через обработчики, предлагая им запись для обработки. Фактический объект, переданный к обработчики, является этим, которое является возвращенный от
prepare()
.
-
start
()¶ Запускает слушателя.
При этом запускается фоновый поток для отслеживания очереди обработки LogRecords.
-
stop
()¶ Останавливает слушателя.
Это просит поток прекратить работу, а затем ждет, пока он это сделает. Обратите внимание, что если вы не вызовете это до завершения работы приложения, в очереди могут остаться некоторые записи, которые не будут обработаны.
-
enqueue_sentinel
()¶ Записывает стража в очередь, чтобы заставить слушателя выйти. Эта реализация использует
put_nowait()
. Можно переопределить этот метод, если требуется использовать тайм-ауты или работать с пользовательскими реализациями очереди.Добавлено в версии 3.3.
-
См.также
- Модуль
logging
- Справочник API для модуля logging.
- Модуль
logging.config
- Конигарационное API для модуля logging.