django中添加日志功能


官方文檔 猛戳這里

在settings中配置以下代碼

復制代碼
#LOGGING_DIR 日志文件存放目錄
LOGGING_DIR = "logs"   # 日志存放路徑
if not os.path.exists(LOGGING_DIR):
    os.mkdir(LOGGING_DIR)

import logging

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {  #格式化器
        'standard': {
            'format': '[%(levelname)s][%(asctime)s][%(filename)s][%(funcName)s][%(lineno)d] > %(message)s'
        },
        'simple': {
            'format': '[%(levelname)s]> %(message)s'
        },
    },
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file_handler': {
             'level': 'INFO',
             'class': 'logging.handlers.TimedRotatingFileHandler',
             'filename': '%s/django.log' % LOGGING_DIR,  #具體日志文件的名字
             'formatter':'standard'
        }, # 用於文件輸出
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
             'formatter':'standard'
        },
    },
    'loggers': {   #日志分配到哪個handlers中
        'mydjango': {
            'handlers': ['console','file_handler'],
            'level':'DEBUG',  
            'propagate': True,
        },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
    ####如果要將get,post請求同樣寫入到日志文件中,則這個觸發器的名字必須交django,然后寫到handler中 } }
復制代碼

 

在settings中寫完配置之后,下面就要具體到相應的視圖函數中了。注意:這里我們在實施到具體函數或方法的時候需要手動捕獲異常

然后視圖函數中

復制代碼
#這里我們模擬一個登陸來寫

log = logging.getLogger('mydjango')  #這里的mydjango是settings中loggers里面對應的名字


class Login(View):
    def get(self,request):
        return render(request,'login.html')
    def post(self,request):
        user = request.POST.get('username')
        pwd = request.POST.get('password')
        try:
            s = 1/0
        except Exception as e:
            log.error(e)
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM