1. 程式人生 > >Python Flask & Django框架中配置logging日誌檔案

Python Flask & Django框架中配置logging日誌檔案

一. Python 在Flask框架中日誌檔案的配置

 一般在專案的初始化檔案__init__.py 或 Config.py檔案中進行配置

注意:需要手動在專案檔案目錄下建立logs包, 用於儲存日誌檔案,否則會報錯。

def log_file(LEVEL):

    """記錄日誌內容"""
    # 設定日誌的記錄等級
    logging.basicConfig(level=LEVEL)  # 除錯debug級

    # logs/log--需要修改成自己定義的路徑&檔名
    # 建立日誌記錄器,指明日誌儲存的路徑、每個日誌檔案的最大大小、儲存的日誌檔案個數上限
    file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024 * 1024 * 100, backupCount=10)

    # 建立日誌記錄的格式 日誌等級 輸入日誌資訊的檔名 行數 日誌資訊
    formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')

    # 為剛建立的日誌記錄器設定日誌記錄格式
    file_log_handler.setFormatter(formatter)

    # 為全域性的日誌工具物件(flask app使用的)新增日誌記錄器
    logging.getLogger().addHandler(file_log_handler)

二. Python Django框架中日誌檔案的配置

一般配置在專案的配置的檔案  settings.py  中

注意:需要手動在專案檔案目錄下建立logs包,用於儲存日誌檔案,否則會報錯。

# 日誌檔案設定
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': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            
            # logs/abc.log 需要修改成自己定義的檔案目錄&檔名
            'filename': os.path.join(BASE_DIR, "logs/abc.log"),  # 日誌檔案的位置
            'maxBytes': 300 * 1024 * 1024,
            'backupCount': 10,
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'django': {  # 定義了一個名為django的日誌器
            'handlers': ['console', 'file'],
            'propagate': True,
        },
    }
}

--------------------------------------END-----------------------------------------