DJango錯誤日誌生成

来源:https://www.cnblogs.com/pythonywy/archive/2019/09/22/11569390.html
-Advertisement-
Play Games

0922自我總結 DJango錯誤日誌生成 setting.py設置 exception.py(拋錯設置) logging.py ...


0922自我總結

DJango錯誤日誌生成

setting.py設置

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
        },
    },
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file': {
            # 實際開發建議使用WARNING
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            # 日誌位置,日誌文件名,日誌保存目錄必須手動創建,註:這裡的文件路徑要註意BASE_DIR
            'filename': os.path.join(os.path.dirname(BASE_DIR), "logs/luffy.log"),
            # 日誌文件的最大值,這裡我們設置300M
            'maxBytes': 300 * 1024 * 1024,
            # 日誌文件的數量,設置最大日誌數量為10
            'backupCount': 10,
            # 日誌格式:詳細格式
            'formatter': 'verbose',
            # 編碼
            'encoding': 'utf-8'
        },
    },
    # 日誌對象
    'loggers': {
        'django': {
            'level': 'INFO',
            'handlers': ['console', 'file'],
            'propagate': True,  # 是否讓日誌信息繼續冒泡給其他的日誌處理系統
        },
    }
}

exception.py(拋錯設置)

# rest_framework.views 下的 exception_handler 處理了所有 drf可控範圍內的異常
from rest_framework.views import exception_handler as drf_exception_handler
# drf的異常還是交給 drf_exception_handler,我們只需要處理 drf未處理的異常
from rest_framework.response import Response
from .response import APIResponse
# 自定義異常句柄的原因:要通過 logging 記錄異常日誌
from .logging import logger
def exception_handler(exc, context):
    response = drf_exception_handler(exc, context)

    if response is None:
        # drf處理不了的異常
        error_info = '【%s】【%s】' % (context['view'], exc)
        logger.error(error_info)
        # return Response({
        #     'exception': '伺服器異常',
        # }, status=500)
        return APIResponse(1, '伺服器異常', status=500)

    response.exception = True
    return response

logging.py

import logging
logger = logging.getLogger('django')

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 函數概述 qsort 為quick sort的簡寫,意為快速排序,主要用於對各種數組的排序,在頭文件stdlib.h中。 因為數組的元素可能是任何類型的,甚至是結構或者聯合,所以必須高數函數qsort如何確定兩個數組元素哪一個“更小”,這就需要我們給出比較的規則,即什麼算大,什麼算小。 通過編寫比較 ...
  • 在 Spring Cloud 微服務系統中,一種常見的負載均衡方式是,客戶端的請求首先經過負載均衡(Ngnix),再到達服務網關(Zuul 集群),然後再到具體的服務。服務統一註冊到高可用的服務註冊中心集群,服務的所有的配置文件由配置服務管理,配置服務的配置文件放在 GIT 倉庫,方便開發人員隨時改 ...
  • 前言 越來越多的項目已經使用 "Java 8" 了,毫無疑問, "Java 8" 是Java自Java 5(發佈於2004年)之後的最重要的版本。這個版本包含語言、編譯器、庫、工具和 JVM 等方面的十多個新特性。在本文中我們將學習這些新特性,並用實際的例子說明在什麼場景下適合使用。 引用: 本文參 ...
  • R語言構建蛋白質網路並實現GN演算法 1.蛋白質網路的構建 我們使用與人類HIV相關的蛋白質互作數據hunam HIV PPI.csv來構建這個蛋白質互作網路。 在R中,我們可以從存儲在R環境外部的文件讀取數據。還可以將數據寫入由操作系統存儲和訪問的文件。 R可以讀取和寫入各種文件格式,如:csv,e ...
  • 面試題 如何保證消息的順序性? 面試官心理分析 其實這個也是用 MQ 的時候必問的話題,第一看看你了不瞭解順序這個事兒?第二看看你有沒有辦法保證消息是有順序的?這是生產系統中常見的問題。 面試題剖析 我舉個例子,我們以前做過一個 mysql 同步的系統,壓力還是非常大的,日同步數據要達到上億,就是說 ...
  • 發現模塊和集群的形成 目標 發現節點 Master選舉 組成集群,在Master信息發生變化時及時更新。 故障檢測 細分為幾個子模塊 Discovery發現模塊 Discover是在集群Master節點未知時,互相發現對方的過程,例如新節點的加入或是先前的主節點宕機,如果一個節點不滿足Master資 ...
  • JConsole(可視化工具) 運行 JConsole記憶體監控 測試代碼 這裡看到我們有倆個線程。 JPS(JVM Process status) JPS是使用的頻率最高的工具,和linux下的ps命令差不多(把J去掉就是一個ps)。 因為我這裡開啟了一個eclipse,所以運行結果如下所示: 如果 ...
  • 1. 概述 在本教程中,我們將探討如何使用兩種不同的策略改進客戶端重試:指數後退和抖動。 2. 重試 在分散式系統中,多個組件之間的網路通信隨時可能發生故障。 客戶端應用程式通過實現重試來處理這些失敗。 設想我們有一個調用遠程服務的客戶端應用程式—— PingPongService 。 如果 Pin ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...