Saya sangat menyukai ini, inilah contoh kerja Anda! Serius ini luar biasa!
Mulailah dengan memasukkan ini ke dalam file 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',
},
}
}
Sekarang apa artinya semua ini?
- Formaters Saya suka tampil dengan gaya yang sama seperti ./manage.py runserver
- Penangan - Saya ingin dua log - file teks debug, dan konsol info. Ini memungkinkan saya untuk benar-benar menggali (jika perlu) dan melihat file teks untuk melihat apa yang terjadi di balik terpal.
- Penebang - Di sinilah kami menentukan apa yang ingin kami catat. Secara umum django mendapat WARN dan di atasnya - pengecualian (karena itu menyebar) adalah backend di mana saya suka melihat panggilan SQL karena mereka bisa gila .. Terakhir adalah aplikasi saya, saya memiliki dua penangan dan mendorong semuanya ke sana.
Sekarang bagaimana cara mengaktifkan MYAPP untuk menggunakannya ...
Sesuai dokumentasi, letakkan ini di bagian atas file Anda (views.py) ..
import logging
log = logging.getLogger(__name__)
Kemudian untuk mendapatkan sesuatu lakukan ini.
log.debug("Hey there it works!!")
log.info("Hey there it works!!")
log.warn("Hey there it works!!")
log.error("Hey there it works!!")
Level log dijelaskan di sini dan untuk python murni di sini .
settings.py
, misalnyaMYAPP
dalam contoh ini, juga telah menjadi parameter dalam panggilan kelogging.getLogger
. Oleh karena itu, jika proyek Anda berisi banyak aplikasi mandiri dan Anda ingin mereka menggunakan logger umum yang perlu Anda gunakanlogging.getLogger('MYAPP')
sebagai gantilogging.getLogger(__name__)
Berdasarkan sebagian pada konfigurasi logging yang disarankan oleh rh0dium dan beberapa penelitian lagi yang saya lakukan sendiri, saya mulai merangkai contoh proyek Django dengan default logging yang bagus - fail-well-django .
Contoh keluaran logfile:
Penggunaan rinci dijelaskan dalam README , tetapi pada dasarnya, Anda menyalin modul logger ke proyek Django Anda dan menambahkan
from .logger import LOGGING
di bagian bawah settings.py Anda .sumber