2010-06-23 20 views
6

Google App Engine'de logging modülünün çıktısını nasıl değiştirebilirim?Google App Engine/Python - Günlüğe kaydetme biçimini değiştir

Denedim, ör .:

log_format = "* %(asctime)s %(levelname)-8s %(message)s" 
    date_format = "%a, %d %b %Y %H:%M:%S" 

    console = logging.StreamHandler() 
    fr = logging.Formatter(log_format) 
    console.setFormatter(fr) 

    logger = logging.getLogger() 
    logger.addFilter(SuperfluousFilter()) 
    logger.addHandler(console) 

    logger.setLevel(logging.DEBUG) 
    console.setLevel(logging.DEBUG) 

    logging.error("Reconfiguring logging") 

Ancak bu yinelenen günlüğü çıktı sonuçlanır: Yukarıdaki benim yeni StreamHandler den (ya da bir yere Google kodunda) google/appengine/tools/dev_appserver.py gelen günlük işleyicisi ile biri katılan. Yukarıdaki kod çıkışları: Üst çizgi, dev_appserver.py açıkça benim kodundan alt çizgidir

 
ERROR 2010-06-23 20:46:18,871 initialize.py:38] Reconfiguring logging 
2010-06-23 20:46:18,871 ERROR Reconfiguring logging 

.

Dolayısıyla, şu soru şu: Sanırım Google App Engine'in biçimlendirmesini nasıl değiştirebiliriz, ancak yinelenen çıktıdan nasıl kaçınılır?

Okuduğunuz için teşekkür ederiz.

Brian

İşte

cevap

10

Eğer çıktıyı çoğaltma olmadan günlüğü biçimini değiştirebilirsiniz tek yoludur: doğrudan kök saklanan handlers listesine erişmek zorunda çünkü bu bir hack biraz olan

# directly access the default handler and set its format directly 
logging.getLogger().handlers[0].setFormatter(fr) 

logger. Sorun, GAE'nizin otomatik olarak logging kodunuzu kullanmadan önce kullanmasıdır. Bu, varsayılan bir işleyici oluşturur. Ne yazık ki, yukarıdaki gibi handlers listesine doğrudan erişmeden bu işleyiciye nasıl bir başvuru yapacağınızı göremiyorum.

+0

Çok yardımcı oluyor. Kök kaydedici üzerinde 'setLevel (logging.CRITICAL)' seçeneğini çalıştırmayı ve stderr'e yeni bir logger oluşturmayı düşündüğüm bir başka seçenek. –

İlgili konular