Adlandırma Python kaydediciler
Django, her yerde kaydediciler, şu anda kodlu zor isimleri var.
-Seviye günlük modülü (görünüm fonksiyonları bir modül yani) için bunu yapmak için bir dürtü var.
log= logging.getLogger( __name__ )
Sınıf seviyesinde günlük (__init__
sınıf yöntemi olarak yani) için bunu yapmak için bir dürtü var.
self.log= logging.getLogger( "%s.%s" % ( self.__module__, self.__class__.__name__ ) )
getLogger( "hard.coded.name" )
birkaç düzine tekrarlarını yakalıyorum önce ikinci bir görüş arıyorum.
Bu işe yarar mı? Herkesten aynı yaratıcı olmayan yollar ile kendi zararlılarına adlandırma?
Ayrıca, yıkmak ve bu günlük tanımı sınıf bir dekoratör yazayım mı?
CEVAP
Ben tipik bir sınıf düzeyi için bir ihtiyaç kaydediciler kullanın veya bulmak değil, ama en fazla birkaç derse benim modülleri duruyorum. Basit:
import logging
LOG = logging.getLogger(__name__)
Modül ve sonraki en üstünde
LOG.info('Spam and eggs are tasty!')
dosya herhangi bir yerinden genellikle olmak istediğim yerde beni alır. Bu engeller gerek self.log
hem de nasıl, hangi eğilimi zahmet benden de bir put-in-her-sınıf bakış açısı ve bu beni 5 karakter daha yakın 79 karakter hatları bu şekilde.
Her zaman pseudo-sınıf-dekoratör: bir kullanabilirsiniz
>>> import logging
>>> class Foo(object):
... def __init__(self):
... self.log.info('Meh')
...
>>> def logged_class(cls):
... cls.log = logging.getLogger('{0}.{1}'.format(__name__, cls.__name__))
...
>>> logged_class(Foo)
>>> logging.basicConfig(level=logging.DEBUG)
>>> f = Foo()
INFO:__main__.Foo:Meh
Değişken ve işlev adları için Python a...
Yapma Python kaydediciler bütün mesajl...
Yeniden adlandırma Python Dosyaları...
python nan ve ınf değerleri...
Python, nasıl bir yineleyici üzerinde ...