django 完整日志配置


1.django中的log需要在settings.py中配置

import time

cur_path = os.path.dirname(os.path.realpath(__file__))  # log_path是存放日志的路徑
log_path = os.path.join(os.path.dirname(cur_path), 'logs')
if not os.path.exists(log_path): os.mkdir(log_path)  # 如果不存在這個logs文件夾,就自動創建一個

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        # 日志格式
        'standard': {
            'format': '[%(asctime)s] [%(filename)s:%(lineno)d] [%(module)s:%(funcName)s] '
                      '[%(levelname)s]- %(message)s'},
        'simple': {  # 簡單格式
            'format': '%(levelname)s %(message)s'
        },
    },
    # 過濾
    'filters': {
    },
    # 定義具體處理日志的方式
    'handlers': {
        # 默認記錄所有日志
        'default': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(log_path, 'all-{}.log'.format(time.strftime('%Y-%m-%d'))),
            'maxBytes': 1024 * 1024 * 5,  # 文件大小
            'backupCount': 5,  # 備份數
            'formatter': 'standard',  # 輸出格式
            'encoding': 'utf-8',  # 設置默認編碼,否則打印出來漢字亂碼
        },
        # 輸出錯誤日志
        'error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(log_path, 'error-{}.log'.format(time.strftime('%Y-%m-%d'))),
            'maxBytes': 1024 * 1024 * 5,  # 文件大小
            'backupCount': 5,  # 備份數
            'formatter': 'standard',  # 輸出格式
            'encoding': 'utf-8',  # 設置默認編碼
        },
        # 控制台輸出
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'standard'
        },
        # 輸出info日志
        'info': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(log_path, 'info-{}.log'.format(time.strftime('%Y-%m-%d'))),
            'maxBytes': 1024 * 1024 * 5,
            'backupCount': 5,
            'formatter': 'standard',
            'encoding': 'utf-8',  # 設置默認編碼
        },
    },
    # 配置用哪幾種 handlers 來處理日志
    'loggers': {
        # 類型 為 django 處理所有類型的日志, 默認調用
        'django': {
            'handlers': ['default', 'console'],
            'level': 'INFO',
            'propagate': False
        },
        # log 調用時需要當作參數傳入
        'log': {
            'handlers': ['error', 'info', 'console', 'default'],
            'level': 'INFO',
            'propagate': True
        },
    }
}

2.腳本中調用:

import logging

logger = logging.getLogger('log')

--skip--
logger.info('請求成功! response_code:{};response_headers:{};response_body:{}'.format(response_code, response_headers, response_body[:251]))

logger.error('請求出錯:{}'.format(error))

 


免責聲明!

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



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