Django日誌

logging模塊

Django的日誌使用了python的logging模塊,需要在settings中進行配置
logging模塊由四部分組成

  • 記錄器
    記錄器配置具有日誌級別。此日誌級別描述了記錄器將處理的消息的嚴重性。Python定義了以下日誌級別:

    DEBUG: 用於調試目的的低級系統信息

    INFO: 一般系統信息

    WARNING: 描述已發生的小問題的信息。

    ERROR: 描述已發生的主要問題的信息。

    CRITICAL: 描述已發生的嚴重問題的信息

  • 處理器
    處理器是確定記錄器中每條消息發生情況的引擎。它描述了特定的日誌記錄行爲,例如將消息寫入屏幕,文件或網絡套接字。

    與記錄器一樣,處理器也具有日誌級別。如果日誌記錄的日誌級別未達到或超過處理程序的級別,則處理程序將忽略該消息。

    記錄器可以有多個處理器,每個處理器可以具有不同的日誌級別。以這種方式,可以根據消息的重要性提供不同形式的通知。

  • 過濾器
    過濾器用於提供對日誌記錄從記錄器傳遞到處理程序的附加控制。

    默認情況下,將處理滿足日誌級別要求的任何日誌消息。但是,通過安裝篩選器,可以在日誌記錄過程中添加其他條件。例如,您可以安裝僅允許ERROR發出來自特定源的消息的過濾器。

    過濾器還可用於在發出之前修改日誌記錄。例如,如果滿足一組特定條件,您可以編寫一個過濾器,將ERROR日誌記錄降級 爲WARNING記錄。

    過濾器可以安裝在記錄器或處理器上; 可以在鏈中使用多個過濾器來執行多個過濾操作。

  • 格式化程序
    最終,日誌記錄需要呈現爲文本。格式化程序描述該文本的確切格式。格式化程序通常由包含LogRecord屬性的Python格式化字符串組成 ; 但是,也可以編寫自定義格式化程序來實現特定的格式化行爲。

示例

  • 配置

    LOG_PATH = 'xx/xx/'
    LOGGING = {
        'version': 1,   #定義了配置文件的版本
        'disable_existing_loggers': False,  ## True表示禁用logger
        # 格式化
        'formatters': {
            'default': {
                'format': '%(levelname)s %(asctime)s %(module)s %(funcName)s %(msecs)s %(message)s'
                },
            'simple': {
                'format': '%(levelname)s %(message)s'
                },
            },
         # 處理日誌的方式
        'handlers': {
            'v_handlers': {
                # 級別
                'level': 'DEBUG',
                # 存儲方式
                "class": 'logging.handlers.RotatingFileHandler',
                # 日誌文件大小
                'maxBytes': 5 * 1024,
                'encoding': 'utf8',
                # 日誌文件路徑
                'filename': '{}salary_all.log'.format(LOG_PATH),
                # 格式化方式
                'formatter': 'default',
                },
            'error': {
                'level': "ERROR",
                'class': 'logging.handlers.RotatingFileHandler',
                'maxBytes': 5 * 1024,
                'encoding': 'utf8',
                'filename': '{}salary_error.log'.format(LOG_PATH),
                'formatter': 'simple'
                }
            },
         # 配置日誌的處理方式
        'loggers': {
            'django': {
                'handlers': ['v_handlers'],
                'propagate': True,
                },
            'django.request': {
                'handlers': ['error'],
                'level': 'ERROR',
                'propagate': True
                }
    
            },
         # 過濾器
        'filters': {
    
            }
        }
    
  • format
format 解釋
%(levelno)s 日誌的級別數字形式
%(levelname)s 日誌級別的名稱
%(pathname)s 當前執行程序的路徑
%(filename)s 當前執行程序名
%(funcName)s* 當前的函數
%(lineno)d 記錄日誌的當前行號
%(asctime)s 日期時間
%(msecs)s 毫秒級的時間
%(thread)d 線程ID
%(threadName)s 線程名稱
%(process)d 進程ID
%(message)s 記錄的日誌信息

參考鏈接:時光不寫博客-Django日誌

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章