使用Docker部署Flask项目日志显示不全问题

情景还原

在学习使用Flask做Web服务时想在控制台记录输出请求的ip地址时直接使用了print语句直接在控制台输出来源ip

本地测试控制台内容如下

使用Docker部署Flask项目日志显示不全问题_第1张图片

然后上传到服务器使用Docker来部署时使用postman请求后查看docker 日志的时候只有

使用Docker部署Flask项目日志显示不全问题_第2张图片

仔细对比发现不光我控制台输出的ip地址没有记录上面Flask运行的输出也少了一部分,原因到底是哪里呢?

我进入到容器内修改项目代码后重新启动容器多次请求访问查看日志

使用Docker部署Flask项目日志显示不全问题_第3张图片

发现出现了一次输出,但是还是少东西

然后我怀疑是Docker记录的日志有级别规定,因为我直接运行Python文件时让它输出日志的日志记录是没问题的

此时思路就清晰了

然后我就从启动容器方面入手修改了日志驱动但是试过了还是没有效果(应该还可以改日志输出级别的没有继续深入)

问题解决

既然常规的print输出不显示,那么就用Flask的日志来输出我需要记录的信息。

from flask import Flask
app =Flask(__name__)
@app.route('/test',methods=['POST'])
def test():
    app.logger.critical("请求ip:"+request.remote_addr)

我这里选用的是critical类型的日志,还有warning、info等其他级别的可以用

然后本地请求接口查看控制台

使用Docker部署Flask项目日志显示不全问题_第4张图片

可以看到日志已经输出了

然后部署到docker run一下

使用Docker部署Flask项目日志显示不全问题_第5张图片

可以看到我们打印的请求的ip地址信息已经成功被docker容器的日志记录下来啦

最后我还是建议项目使用自己的日志框架,如:log4j2、logback等等 这样输出信息更全面更可靠

你可能感兴趣的:(flask,python,后端,docker)