ฉันใส่สิ่งต่อไปนี้ลงในไฟล์ชื่อ repro.py
จากนั้นพิมพ์ python repro.py
(ฉันใช้ C Python 2.7.5) มันล้มเหลวโดยมีข้อผิดพลาดในคำถาม แหล่งที่มายืนยันว่าไม่มีวิธีการของชื่อนั้นในคลาส LoggerAdapter ยกเว้นเอกสาร (http://docs.python.org/2/library/logging.html#logging.LoggerAdapter) บอกว่ามี:
นอกเหนือจากที่กล่าวมาข้างต้น LoggerAdapter ยังรองรับวิธีการต่อไปนี้ของ Logger เช่น debug(), info(), warning(), error(), ข้อยกเว้น(),critical(), log(), isEnabledFor(), getEffectiveLevel() , setLevel(), hasHandlers() วิธีการเหล่านี้มีลายเซ็นเหมือนกับลายเซ็นใน Logger ดังนั้นคุณจึงใช้อินสแตนซ์ทั้งสองประเภทสลับกันได้
นี่เป็นข้อผิดพลาดหรือฉันเข้าใจอะไรผิดหรือเปล่า? หากเป็นอย่างหลัง เป็นไปได้ไหมที่จะใช้อินสแตนซ์ LoggerAdapter แทนอินสแตนซ์ Logger แบบดรอปอิน
import logging logging.basicConfig ()
class CustomAdapter(logging.LoggerAdapter):
def process(self, msg, kwargs):
return '[%s] %s' % (self.extra['connid'], msg), kwargs
logger = logging.getLogger(__name__)
adapter = CustomAdapter(logger, {'connid': '1234'})
adapter.setLevel (logging.WARN)
adapter.warning ("Ahoy matey")
logging.WARNING
ไม่ใช่logging.WARN
ฉันลองใช้รหัสของคุณแล้วหากคุณลบฟังก์ชันsetLevel
การเรียกใช้โค้ดของคุณใช้งานได้ (คุณอาจรู้เรื่องนี้แล้ว) - person jramirez   schedule 31.10.2013