ฉันรักสิ่งนี้มากนี่คือตัวอย่างการทำงานของคุณ! นี่มันสุดยอดจริงๆ!
เริ่มต้นด้วยการใส่สิ่งนี้ในไฟล์ settings.py
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt' : "%d/%b/%Y %H:%M:%S"
},
},
'handlers': {
'null': {
'level':'DEBUG',
'class':'django.utils.log.NullHandler',
},
'logfile': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': SITE_ROOT + "/logfile",
'maxBytes': 50000,
'backupCount': 2,
'formatter': 'standard',
},
'console':{
'level':'INFO',
'class':'logging.StreamHandler',
'formatter': 'standard'
},
},
'loggers': {
'django': {
'handlers':['console'],
'propagate': True,
'level':'WARN',
},
'django.db.backends': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'MYAPP': {
'handlers': ['console', 'logfile'],
'level': 'DEBUG',
},
}
}
ตอนนี้ทั้งหมดนี้หมายความว่าอย่างไร?
- Formaters ฉันชอบให้มันออกมาเป็นสไตล์เดียวกับ. /manage.py runerver
- ตัวจัดการ - ฉันต้องการบันทึกสองรายการ - ไฟล์ข้อความดีบักและคอนโซลข้อมูล สิ่งนี้ทำให้ฉันสามารถเจาะลึกได้ (ถ้าจำเป็น) และดูไฟล์ข้อความเพื่อดูว่าเกิดอะไรขึ้นภายใต้ประทุน
- คนตัดไม้ - นี่คือจุดที่เราตอกตะปูสิ่งที่เราต้องการบันทึก โดยทั่วไปแล้ว django จะได้รับ WARN ขึ้นไป - ข้อยกเว้น (ดังนั้นจึงแพร่กระจาย) คือแบ็กเอนด์ที่ฉันชอบดูการโทร SQL เพราะมันอาจจะบ้า .. สุดท้ายคือแอพของฉันคือฉันมีตัวจัดการสองตัวและผลักดันทุกอย่างไปที่มัน
ตอนนี้ฉันจะเปิดใช้งาน MYAPP เพื่อใช้งานได้อย่างไร ...
ตามเอกสารประกอบวางไว้ที่ด้านบนของไฟล์ของคุณ (views.py) ..
import logging
log = logging.getLogger(__name__)
จากนั้นทำสิ่งนี้ออกไป
log.debug("Hey there it works!!")
log.info("Hey there it works!!")
log.warn("Hey there it works!!")
log.error("Hey there it works!!")
มีการอธิบายระดับบันทึกที่นี่และสำหรับ python ที่แท้จริง