Nếu bạn có các mô-đun initaliser khác nhau để kiểm tra, phát triển và sản xuất thì bạn có thể vô hiệu hóa mọi thứ hoặc chuyển hướng nó trong trình khởi tạo. Tôi có local.txt, test.py và sản xuất tất cả đều kế thừa từ common.y
common.py thực hiện tất cả các cấu hình chính bao gồm đoạn mã này:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'django.server': {
'()': 'django.utils.log.ServerFormatter',
'format': '[%(server_time)s] %(message)s',
},
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'django.server': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'django.server',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'INFO',
'propagate': True,
},
'celery.tasks': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
'django.server': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False,
},
}
Sau đó, trong test.txt tôi có cái này:
console_logger = Common.LOGGING.get('handlers').get('console')
console_logger['class'] = 'logging.FileHandler
console_logger['filename'] = './unitest.log
Điều này thay thế trình xử lý bàn điều khiển bằng FileHandler và có nghĩa là vẫn đăng nhập nhưng tôi không phải chạm vào cơ sở mã sản xuất.