我有一个flask应用程序,只有一条路线,没有复杂的事情发生,运行在docker容器中。我一辈子都不能让print语句出现在日志中(docker compose logs-f
调用print("test",flush=True)
- 设置
PYTHONUNBUFFERED=1
并验证它是否在实际容器中设置了echo
- 设置
PYTHONUNBUFFERED=0
- 使用
-u
标志运行python - 使用日志模块(logger.warning、logger.info等)
到目前为止,一切都不起作用。flask应用程序启动得非常好,但没有显示我的打印语句的输出。我通过添加随机语法错误并观察应用程序块本身来检查是否编辑了正确的文件。我正在使用python 3.8和docker compose 2
我在寻找类似问题的答案时发现了这个问题。我在容器中的conda环境中运行一个烧瓶应用程序,即使烧瓶应用程序本身工作正常,也没有得到任何日志输出。我添加了以下行到我的Dockerfile和它开始日志记录的预期-
ENV PYTHONUNBUFFERED=1
运行回显"源激活my_env"
ENV PATH /opt/conda/envs/my_env/bin:$PATH
CMD[“python”,“api.py”]
您可以使用docker-comment或docker查看日志
使用docker compose,您必须查看服务
Note: you add containername but you have to add service name
NOT $ docker-compose logs -f <containername>
USE $ docker-compose logs -f <SERVICE_NAME>)
对于docker,您必须添加容器名称或容器id
docker logs -f CONTAINER_ID | CONTAINER_NAME
试试这个:
import sys
print('It is working',file=sys.stderr)
在Docker Compose管理的Docker容器内运行的Python应用程序中使用语句时,只记录输出。香草语句不可见,因此: ...从未出现在常规日志中: (您可以在我的应用程序中看到其他库显式打印的其他日志,但没有我自己的调用。) 如何避免我的调用被忽略?
问题内容: 我是一个相对较新的程序员,所以这可能是一个非常简单的问题,但是让我有些困惑。 我正在尝试将Java GUI的最终输出打印到打印机。现在,在我的GUI中,有了它,当您单击打印时,会弹出一个弹出窗口,列出可用的打印机,并根据您选择的打印机,将其打印到该打印机。 但是事实并非如此。我通过搜索互联网来解决此问题,从而获得了大部分代码,并找到了一些很有前途的代码。但是,它是从文件打印出来的。因此
在我的项目中,客户需要使用POS打印机打印收据,这可以使用JAVA POS来完成。我在网上搜索没有任何有用的材料,但发现 1.javapos 2.jpos 可以有人请指导我应该进行JAVA POS或JPOS。 该应用程序基于Java Swing desktop而不是基于web。 真的坚持这一点,任何帮助都是非常有用的
4.12. 打印输出 前面例子中涉及到的打印都比较简单。在这一节中,我们将要讨论Go语言格式化输出的功能。 我们已经用过"fmt"包中的"Printf"和"Fprintf"等输出函数。"fmt"包中的"Printf"函数的 完整说明如下: Printf(format string, v ...) (n int, errno os.Error) 其中"..."表示数目可变参数,
问题内容: 我有一个python脚本test.py: 在linux命令行上执行 返回: 然后执行 哪个返回 如何重定向输出使os.system调用在print语句之前打印? 问题答案: 当您输出到管道时,Python缓冲写入的输出,并在刷新,溢出,关闭后(程序退出时)输出。虽然它将缓冲打印调用,但系统调用输出将直接输出到stdout中,并且其输出将不会被缓冲。这就是为什么您会看到这样的优先级。为了
问题内容: 我有一部分代码可以作为服务的一部分在本地正常运行。 该代码作为服务的一部分运行,当我通过提供数据进行单元测试时,它最终将生成报告并进行打印。 当我从ajax调用在.ashx中运行完全相同的代码段时。报告已生成(我可以看到在磁盘上创建的pdf文件),但未进行打印。 在这两种情况下,都使用相同的代码来打印报告。(两种情况下objReport.DefaultAutoPrint = 0) 我唯