Найти - Пользователи
Полная версия: Python logging
Начало » Python для экспертов » Python logging
1
Андрей Светлов
Написал статейку о моей практике логирования на любимом языке программирования.
Высказывайте свое “фи” :)
xonix
В свое время использовал такую конструкцию:

import sys
import config
def debug(*args):
	caller_function_name = sys._getframe().f_back.f_code.co_name
	
	try:
		caller_class_name = sys._getframe().f_back.f_locals['self'].__class__.__name__
	except KeyError:
		caller_class_name = ''
	
	if config.DEBUG:
		print '[%s#%s]: %s' % (caller_class_name, caller_function_name, ' '.join(map(str, args)))
		
		
if __name__ == '__main__':
	class AA(object):
		def bbb(self):
			debug('qqq')
			
	AA().bbb() # => [AA#bbb]: qqq

Преимущество в том, что при логгировании сами определяются имя функции и класса
Yurietc
А можно разные типы уведомлений записывать в разные файлы ?
Андрей Светлов
да. Если по иерархии - нухно вешать разные handlers:
getLogger('a').addHandler(FileHandler('a.txt')
getLogger('b').addHandler(FileHandler('b.txt')

Если по loglevel - нужно сделать свой handler, унаследовав его от Handler, FileHandler или еще какого подходящего и переопределить emit
Yurietc
Спасибо, Андрей.
Если кого то еще заинтересует подобный вопрос, то можно почитать здесь : http://docs.python.org/lib/multiple-destinations.html
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB