我在LAMP
服务器上运行了两个烧瓶实例。两者都在他们自己的虚拟环境中。
我注意到,如果我同时在非root用户上同时运行,那么从“Web”角度来看它们工作得很好但是,我只从一个用户那里得到控制台消息/调试实例。
有没有办法可以显示控制台消息或将此类输出路由到文件?
答案 0 :(得分:1)
Flask has a pretty great tutorial when it comes to application logging
我的个人建议是使用类似的东西
if not app.debug:
import logging
from themodule import TheHandlerYouWant
file_handler = logging.handlers.RotatingFileHandler(
filename="/var/log/<flask_instance_name>",
maxBytes=500000000,
backupCount=4)
file_handler.setLevel(logging.WARNING)
app.logger.addHandler(file_handler)
在这种情况下,每个文件的角色都超过500 Mb,一次只能有5个副本,只有日志的总潜在空间利用率500 Mb * 5 files = 2.5 Gb * 2 instances = 5 Gb
。我强调这些数字是因为它们很重要。
稍微复杂但总体上更好的方法是使用NTEventLog或SysLog。这些更复杂,因为它们需要更改系统。例如,SysLog要求UDP端口514
打开并监听
if not app.debug:
import logging
from themodule import TheHandlerYouWant
file_handler = logging.handlers.SysLogHandler(address="Instance address")
file_handler.setLevel(logging.WARNING)
app.logger.addHandler(file_handler)
重要的是,每个烧瓶应用程序的地址或文件名参数都不同。
在您实例化记录器之后,然后在应用程序在范围内的任何位置,您可以通过这种方式调用记录器。现在,您可以明确控制日志消息的去向。
@app.route('/', methods=['GET', 'POST'])
def home_page():
app.logger.debug("I'm a debugging message going to file {}!".format(
app.logger.baseFilename))
return "This is a test home page."