我的 webapp 使用 Python/Flask,并通过 Apache2 托管在 Ubuntu 服务器上。
我想使用 Python 的日志记录模块写入日志文件。我的开发服务器在 Windows 上,日志在那里按预期工作,但我无法让它在 Ubuntu 测试服务器上工作。
这是我的设置方式:
import logging
from flask import Flask
log_location = os.path.abspath(os.path.join("var", "www", "webApp", "webApp", "logfile.log"))
FORMAT = '%(asctime)s : %(levelname)s : %(name)s : %(message)s'
logging.basicConfig(level=logging.INFO, format=FORMAT, datefmt='%m/%d/%Y %H:%M:%S', handlers=[
logging.FileHandler(log_location),
logging.StreamHandler(sys.stdout)])
app = Flask(__name__, static_folder='/var/www/webApp/webApp/web-app-build/build/')
logging.info("Testing the logger...")
有了这个,我希望这个日志写入 /var/www/webApp/webApp/logfile.log
上的日志文件。 ,但即使创建了文件,当我 vim 时,它也是空的。我可以改成什么
让它起作用?
/var/log/apache2/error.log
访问日志,但我会喜欢在上述位置访问它。
启动应用程序。我还尝试在
__init__.py
中设置记录器(下面的代码),但结果似乎保持不变。 要写入日志文件的位置。
我看到的一些有趣的事情是:
当我重新加载 apache2 以重新启动应用程序时,尚未创建日志文件。然后,当我在应用程序上执行会导致发生日志记录的操作时,会创建日志文件。然而,它是空的。如果我然后删除日志文件并在应用程序中执行更多通常会导致日志记录的事情,则不会重新创建日志文件。
from rest.server import app
import os
import logging
import sys
log_location = os.path.abspath(os.path.join("var", "www", "webApp", "webApp", "logfile.log"))
FORMAT = '%(asctime)s : %(levelname)s : %(name)s : %(message)s'
logging.basicConfig(level=logging.INFO, format=FORMAT, datefmt='%m/%d/%Y %H:%M:%S', handlers=[
logging.FileHandler(log_location),
logging.StreamHandler(sys.stdout)])
logging.info("Testing the logger...")
if __name__ == "__main__":
app.run()
最佳答案
默认情况下,flask 使用 Python 的 logging
包来写它的日志。你必须把你的日志配置连接到 flask 记录器对象 ,即 app.logger
:
from rest.server import app
import os
import logging
from logging import FileHandler
import sys
log_location = os.path.abspath(os.path.join("var", "www", "webApp", "webApp", "logfile.log"))
FORMAT = '%(asctime)s : %(levelname)s : %(name)s : %(message)s'
file_handler = FileHandler(log_location)
file_handler.setFormatter(logging.Formatter(FORMAT))
file_handler.setLevel(logging.INFO)
app.logger.addHandler(file_handler)
app.logger.info("Testing the logger...")
if __name__ == "__main__":
app.run()
关于python - 为什么我的 flask 应用程序没有写入日志文件? (在 ubuntu 上通过 apache2 托管),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70604306/