2010-09-02 12 views
36

द्वारा कॉन्फ़िगर किए गए हैंडलर को हटा/निरीक्षण/संशोधित करें फ़ाइल कॉन्फ़िगर() फ़ंक्शन का उपयोग करके मेरे लॉगर्स के लिए कॉन्फ़िगर किए गए हैंडलर को कैसे हटा/निरीक्षण/संशोधित कर सकता हूं?लॉगिंग फ़ाइल कॉन्फ़िगर()

लॉगजर.removeHandler (hdlr) विधि को हटाने के लिए, लेकिन अगर फ़ाइल से कॉन्फ़िगर किया गया था तो मैं पहले स्थान पर हैंडलर कैसे प्राप्त करूं?

उत्तर

35

logger.handlers में लॉगर के सभी हैंडलर के साथ एक सूची है।

+6

यह दस्तावेज नहीं है। क्या इसका इस्तेमाल सुरक्षित है? – Manish

+6

@Manish: कोड को देखते हुए, मैं कहूंगा कि यह उपयोग करना सुरक्षित है, जब तक आप multithreading नहीं करते हैं। हैंडलर सूची लॉक द्वारा संरक्षित एक साझा संसाधन है और सूची में केवल हैंडलर के संदर्भ शामिल हैं। यदि आप multithreading करते हैं, तो इसका उपयोग न करें। –

+1

इसमें केवल मानक हैंडलर हैं, यदि आपने अपना लिखा है तो क्या होगा? साथ ही, इसे एक सूची बुलाकर भ्रामक है, मैं उदाहरणों की एक सूची की तलाश में था और कोई भी नहीं था। यह सिर्फ वर्गों का संग्रह है। – bartekbrak

2

एक और दृष्टिकोण JSON या YAML कॉन्फ़िगरेशन फ़ाइल का उपयोग करना हो सकता है जो एक शब्दकोश में लोड हो जाता है जिसे आप logger.config पर जाने से पहले देख/कुशलतापूर्वक देख सकते हैं।

import yaml 
import logging.config 

with open (LOG_CONFIG, 'rt') as f: 
    config=yaml.safe_load(f) 
    config['handlers']['error_file_handler']['filename']='foo' 
logging.config.dictConfig(config) 
संबंधित मुद्दे