Python logging - библиотека для удобного ведения логов в Python.
Для начала подключим библиотеку и попробуем вывести в консоль сообщения разного типа:
#log.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
# Сообщение отладочное
logging.debug( u'This is a debug message' )
# Сообщение информационное
logging.info( u'This is an info message' )
# Сообщение предупреждение
logging.warning( u'This is a warning' )
# Сообщение ошибки
logging.error( u'This is an error message' )
# Сообщение критическое
logging.critical( u'FATAL!!!' )
При выводе мы получаем:
WARNING:root:This is a warning
ERROR:root:This is an error message
CRITICAL:root:FATAL!!!
Как видно, при выводе мы получаем все, кроме сообщений отладки и информационных сообщений. Для того, чтобы мы могли их увидеть, нужно в настройки логера передать уровень выводимых ошибок:
logging.basicConfig(level = logging.DEBUG)
Сразу хочу оговориться что конфигурационые параметры должны передаваться до первого вызова вывода ошибки. Вот код:
#log.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
logging.basicConfig(level = logging.DEBUG)
# Сообщение отладочное
logging.debug( u'This is a debug message' )
# Сообщение информационное
logging.info( u'This is an info message' )
# Сообщение предупреждение
logging.warning( u'This is a warning' )
# Сообщение ошибки
logging.error( u'This is an error message' )
# Сообщение критическое
logging.critical( u'FATAL!!!' )
Теперь после вывода мы получим все сообщения:
DEBUG:root:This is a debug message
INFO:root:This is an info message
WARNING:root:This is a warning
ERROR:root:This is an error message
CRITICAL:root:FATAL!!!
Но все равно вывод выглядит как-то скудно. Поэтому в конфиге логера можно задать формат выводимого сообщения :
logging.basicConfig(format = u'%(filename)s[LINE:%(lineno)d]# %(levelname)-8s [%(asctime)s] %(message)s', level = logging.DEBUG)
Теперь после вывода мы получаем вот такие сообщения:
log.py[LINE:33]# DEBUG [2012-05-25 00:11:58,466] This is a debug message
log.py[LINE:34]# INFO [2012-05-25 00:11:58,466] This is an info message
log.py[LINE:35]# WARNING [2012-05-25 00:11:58,466] This is a warning
log.py[LINE:36]# ERROR [2012-05-25 00:11:58,467] This is an error message
log.py[LINE:37]# CRITICAL [2012-05-25 00:11:58,467] FATAL!!!
Это уже больше похожее на логи. Видно имя файла и строка, в которой вызванно сообщение.
Теперь давайте запишем логи в файл. Для этого в конфигурации предусмотрен параметр, в котором указывается куда будем писать лог:
logging.basicConfig(format = u'%(levelname)-8s [%(asctime)s] %(message)s', level = logging.DEBUG, filename = u'mylog.log')
С этого момента логи будут писаться в файл, указанный в параметре filename.
Для начала подключим библиотеку и попробуем вывести в консоль сообщения разного типа:
#log.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
# Сообщение отладочное
logging.debug( u'This is a debug message' )
# Сообщение информационное
logging.info( u'This is an info message' )
# Сообщение предупреждение
logging.warning( u'This is a warning' )
# Сообщение ошибки
logging.error( u'This is an error message' )
# Сообщение критическое
logging.critical( u'FATAL!!!' )
При выводе мы получаем:
WARNING:root:This is a warning
ERROR:root:This is an error message
CRITICAL:root:FATAL!!!
Как видно, при выводе мы получаем все, кроме сообщений отладки и информационных сообщений. Для того, чтобы мы могли их увидеть, нужно в настройки логера передать уровень выводимых ошибок:
logging.basicConfig(level = logging.DEBUG)
Сразу хочу оговориться что конфигурационые параметры должны передаваться до первого вызова вывода ошибки. Вот код:
#log.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
logging.basicConfig(level = logging.DEBUG)
# Сообщение отладочное
logging.debug( u'This is a debug message' )
# Сообщение информационное
logging.info( u'This is an info message' )
# Сообщение предупреждение
logging.warning( u'This is a warning' )
# Сообщение ошибки
logging.error( u'This is an error message' )
# Сообщение критическое
logging.critical( u'FATAL!!!' )
Теперь после вывода мы получим все сообщения:
DEBUG:root:This is a debug message
INFO:root:This is an info message
WARNING:root:This is a warning
ERROR:root:This is an error message
CRITICAL:root:FATAL!!!
Но все равно вывод выглядит как-то скудно. Поэтому в конфиге логера можно задать формат выводимого сообщения :
logging.basicConfig(format = u'%(filename)s[LINE:%(lineno)d]# %(levelname)-8s [%(asctime)s] %(message)s', level = logging.DEBUG)
Теперь после вывода мы получаем вот такие сообщения:
log.py[LINE:33]# DEBUG [2012-05-25 00:11:58,466] This is a debug message
log.py[LINE:34]# INFO [2012-05-25 00:11:58,466] This is an info message
log.py[LINE:35]# WARNING [2012-05-25 00:11:58,466] This is a warning
log.py[LINE:36]# ERROR [2012-05-25 00:11:58,467] This is an error message
log.py[LINE:37]# CRITICAL [2012-05-25 00:11:58,467] FATAL!!!
Это уже больше похожее на логи. Видно имя файла и строка, в которой вызванно сообщение.
Теперь давайте запишем логи в файл. Для этого в конфигурации предусмотрен параметр, в котором указывается куда будем писать лог:
logging.basicConfig(format = u'%(levelname)-8s [%(asctime)s] %(message)s', level = logging.DEBUG, filename = u'mylog.log')
С этого момента логи будут писаться в файл, указанный в параметре filename.
Комментариев нет:
Отправить комментарий