1. 程式人生 > 實用技巧 >django的日誌配置檔案

django的日誌配置檔案

django的日誌配置檔案

放入settings.py中

# logger
import datetime
LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s] %(message)s'}
    },
    'filters': {
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        },
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '{}/engine_{}.log'.format("/var/log/project", datetime.datetime.now().date()),  # 日誌輸出檔案
            'maxBytes': 1024 * 1024 * 5,  # 檔案大小
            'backupCount': 5,  # 備份份數
            'formatter': 'standard',  # 使用哪種formatters日誌格式
        },
        'error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '{}/engine_Error_{}.log'.format("/var/log/project", datetime.datetime.now().date()),
            'maxBytes': 1024 * 1024 * 5,
            'backupCount': 5,
            'formatter': 'standard',
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'standard'
        },
        'request_handler': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '{}/engine_Request_{}.log'.format("/var/log/project", datetime.datetime.now().date()),
            'maxBytes': 1024 * 1024 * 5,
            'backupCount': 5,
            'formatter': 'standard',
        },
        'scripts_handler': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '{}/engine_Script_{}.log'.format("/var/log/project", datetime.datetime.now().date()),
            'maxBytes': 1024 * 1024 * 5,
            'backupCount': 5,
            'formatter': 'standard',
        }
    },
    'loggers': {
        # 框架本身執行相關日誌
        # 'django': {
        #     'handlers': ['default'],
        #     'level': 'DEBUG',
        #     'propagate': False
        # },
        'django.request': {
            'handlers': ['request_handler'],
            'level': 'DEBUG',
            'propagate': False,
        },
        'scripts': {
            'handlers': ['scripts_handler'],
            'level': 'INFO',
            'propagate': False
        },
        # 只輸出到控制檯,不寫入日誌檔案
        'console': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': True
        },
        # app engine 模組的日誌處理 並輸出到控制檯
        'engine': {
            'handlers': ['default', 'error', 'console'],
            'level': 'DEBUG',
            'propagate': True
        },
        # 日誌寫入上面handlers定義的error所指向的log日誌檔案 並輸出到控制檯
        'app01': {
            'handlers': ['error', 'console'],
            'level': 'ERROR',
            'propagate': True
        },
        # 日誌同時寫入上面handlers定義的default和error所指向的log日誌檔案
        'app02': {
            'handlers': ['default', 'error'],
            'level': 'ERROR',
            'propagate': True
        },
    }
}

在呼叫的地方

import logging
logger = logging.getLogger("app01")