flask日志配置

import logging
import os
from logging.handlers import TimedRotatingFileHandler
from flask import Flask
from confs.config import config_map

def setup_log(config_name):
    dir_name = 'logs'
    if not os.path.isdir(dir_name):
        os.makedirs(dir_name)

    # 创建自定义日志记录器
    logger = logging.getLogger(__name__)
    logger.setLevel(config_map[config_name].LOG_LEVEL)

    # 创建日志格式
    formatter = logging.Formatter(
        "[%(levelname)s] [%(asctime)s] [%(process)s:%(thread)s] - %(filename)s[line:%(lineno)d]: %(message)s"
    )

    # 配置文件日志处理程序
    file_log_handler = TimedRotatingFileHandler("logs/info.log", when='D', interval=1, backupCount=14, delay=True)
    file_log_handler.setFormatter(formatter)
    logger.addHandler(file_log_handler)

    # 配置错误日志文件
    err_handler = TimedRotatingFileHandler("logs/error.log", when='D', interval=1, backupCount=14, delay=True)
    err_handler.setFormatter(formatter)
    err_handler.setLevel(logging.ERROR)
    logger.addHandler(err_handler)

    # 添加控制台handler
    chlr = logging.StreamHandler()
    chlr.setFormatter(formatter)
    logger.addHandler(chlr)

    return logger

def create_app(config_name):
    # 配置日志
    logger = setup_log(config_name)

    # 创建 Flask 应用
    app = Flask(__name__)

    # 配置 Flask 使用自定义的日志记录器
    app.logger = logger

    return app

蓝图中使用方式

from flask import Blueprint, current_app

blueprint = Blueprint('some_blueprint', __name__)

@blueprint.route('/some_route')
def some_route():
    current_app.logger.info("访问了某个路由")
    return "Some response"

在应用外部使用

如果您需要在 Flask 应用的外部(如一些独立的模块或服务中)使用日志记录器,您可以直接从模块中获取日志记录

import logging

logger = logging.getLogger(__name__)

def some_function():
    logger.info("执行了某个功能")

config配置

# -*- coding: utf-8 -*-

import os
import logging
from urllib import parse


class Config(object):
    SECRET_KEY = "sjljajs@ljj;k;fads"

    # 数据库配置
    USERNAME = os.getenv('USERNAME')
    PASSWORD = os.getenv('PASSWORD')
    HOSTNAME = os.getenv('HOSTNAME')
    PORT = os.getenv('PORT')
    DATABASE = os.getenv('DATABASE')

    # sftp配置
    SFTP_HOST = os.getenv('SFTP_HOST')
    SFTP_PORT = os.getenv('SFTP_PORT')
    SFTP_NAME = os.getenv('SFTP_NAME')
    SFTP_PASWD = os.getenv('SFTP_PASWD')
    REMOTE_DIR = "/file/yunjs_sftp"

    # 设置日志等级
    LOG_LEVEL = logging.INFO


class DevelopmentConfig(Config):
    """开发环境下的配置"""

    USERNAME = "mobile"
    PASSWORD = "mobile"
    HOSTNAME = "192.168.1.145"
    PORT = 3306
    DATABASE = "mobile"

    SFTP_HOST = "120.197.235.112"
    SFTP_PORT = 6606
    SFTP_NAME = "cloud_sftp"
    SFTP_PASWD = "slj#$FW34G#!fsG"
    REMOTE_DIR = "/file/yunjs_sftp"


class ProductionConfig(Config):
    """生产环境下的配置"""
    LOG_LEVEL = logging.INFO


class TestingConfig(Config):
    """单元测试环境下的配置"""
    DEBUG = True
    TESTING = True


config_map = {
    "dev": DevelopmentConfig,
    "pro": ProductionConfig,
    "test": TestingConfig
}

# ENV = "dev" 、"pro" 、"test"
# ENV = os.getenv('ENV')
# SERVER_PORT = os.getenv('SERVER_PORT')
ENV = 'dev'
LOG_LEVEL = "info"

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值