2011-08-10 24 views
33

Bir python komut dosyasına yazıyorum, günlüğe kaydetme modülünü kullanarak olayları günlüğe kaydetmeye çalışıyorum. Ben logging.debug("Some string") çalıştırmayı denediğinizde this page in the docslogging.debug kök logger çıktı üretmesi mesaj olması gerektiğini söylese de, ben konsola çıktısı alamazsınız,Python günlüğe kaydetme hiçbir şey çıkmıyor

ERROR_FORMAT = "%(levelname)s at %(asctime)s in %(funcName)s in %(filename) at line %(lineno)d: %(message)s" 
DEBUG_FORMAT = "%(lineno)d in %(filename)s at %(asctime)s: %(message)s" 
LOG_CONFIG = {'version':1, 
       'formatters':{'error':{'format':ERROR_FORMAT}, 
          'debug':{'format':DEBUG_FORMAT}}, 
       'handlers':{'console':{'class':'logging.StreamHandler', 
            'formatter':'debug', 
            'level':logging.DEBUG}, 
          'file':{'class':'logging.FileHandler', 
            'filename':'/usr/local/logs/DatabaseUpdate.log', 
            'formatter':'error', 
            'level':logging.ERROR}}, 
       'root':{'handlers':('console', 'file')}} 
logging.config.dictConfig(LOG_CONFIG) 

: Ben logger yapılandırmak için aşağıdaki kodu var. Programım neden hiçbir şey üretmiyor ve nasıl düzeltebilirim?

cevap

54

Varsayılan günlük düzeyi uyarıdır. Seviyeyi değiştirmediğiniz için kök logger'ın seviyesi hala uyarı veriyor. Bu, hata ayıklama günlükleri dahil olmak üzere, uyarıdan daha düşük bir düzeydeki herhangi bir günlük kaydını yok sayacak anlamına gelir.

Bu

tutorial açıklanmıştır: düzey bilgi daha yüksektir çünkü

import logging 
logging.warning('Watch out!') # will print a message to the console 
logging.info('I told you so') # will not print anything 

'bilgi' hattı, şey yazmaz.

sadece kök logger içinde ayarlayın, düzeyini değiştirmek için: o seviye = DEBUG ile bir işleyici tanımlamak için yeterli değil, başka deyişle

'root':{'handlers':('console', 'file'), 'level':'DEBUG'} 

, fiili günlük düzeyi de sırayla DEBUG olmalıdır Bir şey çıktı almak için.

+0

Dokümantasyon, varsayılan seviyesinin, her şeyi vermesi gereken 0 seviyesi olan NOTSET olduğunu söylüyor ... Bu neden doğru değil? – Ben

+0

@Ben bu nerede diyor? Görebildiğim tek şey "Varsayılan seviye UYARI, yani bu paketin, aksi takdirde gerçekleştirilecek şekilde yapılandırılmadığı sürece, yalnızca bu seviyedeki ve üstü olayların izlenmesi anlamına gelir." –

+0

https://docs.python.org/3.6/library/logging.html#logging.Logger.setLevel – Ben

İlgili konular