python - 调用 logging.getLogger(__name__) logger.handlers 后的烧瓶丢失
问题描述
我没有使用内置的烧瓶日志记录机制。取而代之的是,我创建了以下内容,这些内容是从烧瓶应用程序的主要内容中创建的。
def init_logger(app):
log_file = LOG_FILE
if app.testing:
log_file = TEST_LOG_FILE
create_logging_folder(app)
logger = logging.getLogger("main")
logger.setLevel(logging.INFO)
rotating_file_handler = RotatingFileHandler(
filename=log_file,
maxBytes=10240,
backupCount=10
)
rotating_file_handler.setLevel(logging.INFO)
rotating_file_handler.setFormatter(
logging.Formatter(
'%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]'
)
)
rotating_file_handler.setLevel(logging.INFO)
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
logger.addHandler(rotating_file_handler)
logger.addHandler(stream_handler)
logger.info("Test")
logger.info(id(logger))
def create_logging_folder(app):
log_dir = LOG_DIR
if app.testing:
log_dir = TEST_LOG_DIR
if not os.path.exists(log_dir):
os.mkdir(log_dir)
return True
info 和日志记录 id 正在日志文件中创建,但是如果我从另一个模块调用记录器,我发现处理程序是空的并且没有创建日志。
logger = logging.getLogger(__name__)
print(logger.handlers) # []
入口点如下
定义运行():
app = main.create_app()
init_logger(app)
logger = logging.getLogger(__name__)
print(logger.handlers) # stil empty
app.run(
debug=os.environ.get("APP_DEBUG", True),
host=os.environ.get("APP_HOST", "0.0.0.0"),
port=os.environ.get("APP_PORT", 5000),
)
这里可能出了什么问题?我怎样才能使这项工作?
解决方案
推荐阅读
- java - Maven maven-war-plugin 不替换 web.xml 中的值
- sql - Postgresql 为什么 INNER JOIN 比 WHERE 慢得多
- sql-server - Azure Data Studio / SQL Operations Manager 中的查询窗口使用哪个服务器连接
- swift - 聊天:“StorageMetadata”类型的值没有成员“downloadURLs”
- php - 自动加载正在更改自动加载文件中包含的变量范围
- firebase - 将firebase中的密钥获取到android studio
- python - 为什么 Python 的 OS 模块不以它们的 UNIX 对应模块命名它的函数?
- javascript - isNaN 和 Number.isNaN 有什么区别?
- python - 修复sql注入
- linux - 致命错误:pthread/pthread_impl.h:没有这样的文件或目录#include