Pada tutorial sebelumnya kita sudah membuat decorator auth user untuk memberikan permission pada service produk yang kita buat
Di bagian ke 5 dari tutorial CRUD Service Produk kita akan belajar tentang TDR.
Fungsi dari TDR sendiri sebagai bagian dari system audit trail. Dalam sistem yang komplek kemudahan tentang error tracing menjadi salah satu kunci kesuksesan implementasi sebuah sistem.
Bayangkan saja jika Anda mempunya sebuah service, yang setiap detik menerima ribuan request, dan ada puluhan request yang mendapat response error berbeda.
Error response ini membutuhkan penyelesaian masalah yang cepat, di sini TDR berperan penting membantu team operation untuk membuat error report warning ke stakeholder terkait.
TDR juga membantu developer mengurangi beban kerja untuk troubleshoot, dengan adanya TDR developer akan lebih percaya diri menghadapi ledakan traffic, karena biasanya saat service di banjiri traffic system akan cenderung error atau bahkan service client terkena timeout.
TDR sendiri juga bisa menjadi sumber data analytic yang bisa di konsumsi oleh tools monitoring seperti kibana, grafana dan yang lainya.
Di tutorial ini ada beberapa tahapan yang perlu Anda ikuti :
class RequestLogMiddleware:
"""Request Logging Middleware."""def __init__(self, get_response):
passdef __call__(self, request):
pass
return# Log unhandled exceptions as well
def process_exception(self, request, exception):
try:
raise exception
except Exception as e:
pass
return exception
MIDDLEWARE = [
'...',
"{directory-name}.middleware.request_log.RequestLogMiddleware",
]
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {},
},
'handlers': {
'logfile': {
'level':'INFO',
'class':'logging.handlers.RotatingFileHandler',
'filename': "{}/logs/tdrlog.log".format(BASE_DIR),
'maxBytes': 5000,
'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': 'INFO',
'propagate': True,
},
'api': {
'handlers': ['logfile'],
'level': 'INFO',
},
}
}
Github: https://github.com/halovina/hvsuserservice/tree/product-bagian-5