0

我没有使用内置的烧瓶日志记录机制。取而代之的是,我创建了以下内容,这些内容是从烧瓶应用程序的主要内容中创建的。

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),
 )

这里可能出了什么问题?我怎样才能使这项工作?

4

0 回答 0