Строки INFO, WARNING, ERROR и CRITICAL в журнале Python
Чтобы записать строку INFO с помощью Python Logging, проверьте, имеет ли регистратор хотя бы уровень ведения журнала INFO.
- Используйте метод logging.info() с сообщением, переданным в качестве аргумента, чтобы вывести строку INFO в консоль или файл журнала.
Если уровень ведения журнала установлен на INFO или DEBUG, то регистратор будет печатать или записывать строки INFO в консоль или файл журнала.
Если вы установите уровень ведения журнала WARNING, ERROR или CRITICAL, то строки INFO и более низкие уровни ведения журнала (DEBUG) не будут записаны в файл журнала.
Порядок уровней ведения журнала:
DEBUG < INFO < WARNING < ERROR < CRITICAL
Пример 1
В этом примере мы импортируем модуль регистрации, установим уровень регистратора на INFO, а затем будем использовать метод info() для регистрации строки INFO.
import logging
#create a logger
logger = logging.getLogger('mylogger')
#set logger level
logger.setLevel(logging.INFO)
#or you can set the following level
#logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('mylog.log')
# create a logging format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
#write a info message
logger.info('This is an INFO message')
После запуска указанной выше программы в файле mylog.log вы могли увидеть следующее содержимое.
2019-02-25 22:30:36,695 - mylogger - INFO - This is an INFO message
Пример 2: с помощью Logger
Вы можете установить фильтр для обработчика журнала, чтобы записывать в файл журнала только строки INFO.
import logging
class MyFilter(object):
def __init__(self, level):
self.__level = level
def filter(self, logRecord):
return logRecord.levelno <= self.__level
#create a logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.INFO)
handler = logging.FileHandler('mylog.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
#set filter to log only INFO lines
handler.addFilter(MyFilter(logging.INFO))
logger.addHandler(handler)
#write an INFO line to log file
logger.info('This is a INFO message')
logger.warning('This is a WARNING message')
logger.error('This is an ERROR message')
logger.critical('This is a CRITICAL message')
Консольный вывод:
2019-02-26 22:22:31,134 - mylogger - INFO - This is a INFO message
Было зарегистрировано только информационное сообщение, но не WARNING, ERROR и CRITICAL.
Чтобы записать строку INFO с помощью Python Logging, проверьте, имеет ли регистратор хотя бы уровень регистрации WARNING.
- Используйте метод logging.warning() с сообщением, переданным в качестве аргумента, чтобы вывести строку WARNING в консоль или файл журнала.
Если уровень ведения журнала установлен на WARNING, INFO или DEBUG, то регистратор будет печатать или записывать строки WARNING в консоль или файл журнала.
Если вы установите уровень ведения журнала ERROR или CRITICAL, то строки WARNING или более низкие уровни ведения журнала (INFO, DEBUG) не будут записаны в файл журнала.
Порядок уровней ведения журнала:
DEBUG < INFO < WARNING < ERROR < CRITICAL
Пример 1
В этом примере мы импортируем модуль регистрации, установим уровень регистратора на WARNING, а затем будем использовать метод warning() для регистрации строки.
import logging
#create a logger
logger = logging.getLogger('mylogger')
#set logger level
logger.setLevel(logging.WARNING)
#or you can set one of the following level
#logger.setLevel(logging.INFO)
#logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('mylog.log')
# create a logging format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
#write a Warning message
logger.warning('This is a WARNING message')
После запуска указанной выше программы в файле mylog.log вы могли увидеть следующее содержимое.
2019-02-25 22:27:00,071 - mylogger - WARNING - This is an WARNING message
Пример 2
Вы можете установить фильтр для обработчика журнала, чтобы записывать в файл журнала только строки WARNING.
import logging
class MyFilter(object):
def __init__(self, level):
self.__level = level
def filter(self, logRecord):
return logRecord.levelno <= self.__level
#create a logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.WARNING)
handler = logging.FileHandler('mylog.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
#set filter to log only WARNING lines
handler.addFilter(MyFilter(logging.WARNING))
logger.addHandler(handler)
logger.warning('This is a WARNING message')
logger.error('This is an ERROR message')
logger.critical('This is a CRITICAL message')
Консольный вывод:
2019-02-26 22:20:28,332 - mylogger - WARNING - This is a WARNING message
Было зарегистрировано только сообщение WARNING, но не сообщение ERROR и CRITICAL.
Чтобы записать строку ERROR с помощью Python Logging, проверьте, имеет ли регистратор хотя бы уровень регистрации ERROR.
- Используйте метод logging.error() с сообщением, переданным в качестве аргумента, чтобы вывести строку ERROR в консоль или файл журнала.
Если уровень ведения журнала установлен на DEBUG, INFO, WARNING или ERROR, то регистратор будет печатать или записывать строки ERROR в консоль или файл журнала.
Если вы установите уровень ведения журнала на CRITICAL, то строки ERROR или более низкие уровни ведения журнала (WARNING, INFO, ОТЛАДКА) не будут записаны в файл журнала.
Порядок уровней ведения журнала:
DEBUG < INFO < WARNING < ERROR < CRITICAL
Пример 1
В этом примере мы импортируем модуль регистрации, установим уровень регистратора на ERROR, а затем будем использовать метод error() для регистрации строки.
import logging
#create a logger
logger = logging.getLogger('mylogger')
#set logger level
logger.setLevel(logging.ERROR)
#or set one of the following level
#logger.setLevel(logging.WARNING)
#logger.setLevel(logging.INFO)
#logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('mylog.log')
# create a logging format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
#write a error message
logger.error('This is an ERROR message')
После запуска указанной выше программы в файле mylog.log вы могли увидеть следующее содержимое.
2019-02-25 22:25:12,473 - mylogger - ERROR - This is an ERROR message
Пример 2
Вы можете установить фильтр для Logger Handler, чтобы записывать в файл журнала только строки ERROR.
import logging
class MyFilter(object):
def __init__(self, level):
self.__level = level
def filter(self, logRecord):
return logRecord.levelno <= self.__level
#create a logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.ERROR)
handler = logging.FileHandler('mylog.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
#set filter to log only ERROR lines
handler.addFilter(MyFilter(logging.ERROR))
logger.addHandler(handler)
logger.error('This is an ERROR message')
logger.critical('This is an CRITICAL message')
Консольный вывод:
2019-02-26 22:13:28,896 - mylogger - ERROR - This is an ERROR message
Было зарегистрировано только сообщение уровня ERROR, но не CRITICAL.
Чтобы записать строку CRITICAL с помощью Python Logging, проверьте, имеет ли регистратор хотя бы критический уровень ведения журнала.
- Используйте метод logging.error() с сообщением, переданным в качестве аргумента, чтобы вывести строку CRITICAL в консоль или файл журнала.
Если уровень ведения журнала установлен на debug, WARNING, ERROR или CRITICAL, то регистратор будет печатать или записывать CRITICAL строки в консоль или файл журнала.
Если вы установите уровень ведения журнала на CRITICAL, то строки ERROR или более низкие уровни ведения журнала не будут записаны в файл журнала.
Порядок уровней ведения журнала:
DEBUG < INFO < WARNING < ERROR < CRITICAL
Пример 1
В этом примере мы импортируем модуль регистрации, установим уровень регистратора на CRITICAL, а затем будем использовать метод CRITICAL() для регистрации строки.
import logging
#create a logger
logger = logging.getLogger('mylogger')
#set logger level
logger.setLevel(logging.CRITICAL)
#or set one of the following level
#logger.setLevel(logging.ERROR)
#logger.setLevel(logging.WARNING)
#logger.setLevel(logging.INFO)
#logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('mylog.log')
# create a logging format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
#write a critical message
logger.critical('This is an CRITICAL message')
После запуска указанной выше программы в файле mylog.log вы могли увидеть следующее содержимое.
2019-02-25 22:21:46,087 - mylogger - CRITICAL - This is a CRITICAL message
В этом руководстве на примерах Python мы узнали, как использовать уровень DEBUG библиотеки Python Logging.
Автор