我没有使用内置的烧瓶日志记录机制。取而代之的是,我创建了以下内容,这些内容是从烧瓶应用程序的主要内容中创建的。
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),
)
这里可能出了什么问题?我怎样才能使这项工作?