tarantool - 如何在 Tarantool Docker 容器中查看 print() 结果
问题描述
我正在使用tarantool/tarantool:2.6.0
Docker 映像(目前是最新的)并为该项目编写 lua 脚本。我试图找出如何查看print()
调用函数的结果。如果没有 print() 工作,调试我的代码非常困难。
在 tarantool 控制台 print() 也没有效果。
使用简单的 print()
文档说 print() 可以工作stdout
,但是当我通过以下方式查看容器的日志时,我看不到任何结果docker logs -f <CONTAINER_NAME>
我还尝试将容器的日志驱动程序设置为local
. 比我一次打印到容器的日志,但只有一次......
容器的/var/log
目录总是空的。
使用 box.session.push()
在控制台中使用box.session.push()
可以正常工作,但是当我在 lua 脚本中使用它时:
-- app.lua
function log(s)
box.session.push(s)
end
-- No effect
log('hello')
function say_something(s)
log(s)
end
box.schema.func.create('say_something')
box.schema.user.grant('guest', 'execute', 'function', 'say_something')
然后say_something()
像这样从 nodeJs 连接器调用:
const TarantoolConnection = require('tarantool-driver');
const conn = new TarantoolConnection(connectionData);
const res = await conn.call('update_links', 'hello');
有什么建议么?谢谢!
解决方案
我想你在命令io.flush()
之后错过了。print
io.flush()
在每次通话后添加后,print
我的消息开始写入日志(docker logs -f <CONTAINER_NAME>
)。
我也建议log
为此目的使用模块。它在没有缓冲的情况下写入标准错误。
关于连接器中的错误,我认为 nodejs 连接器根本不支持推送。
推荐阅读
- python - Python:十六进制转换值未更新
- python - Django 模型,从 4 个模型中提取数据
- google-sheets - Google 电子表格:数值参数无法解析为数字
- php - URL slug 变量
- reactjs - react-virtualized:如何使用单独的 rowRenderer 进行高度测量
- java - 将 mp4 从 Android 手机上传到 Spring 服务器会导致文件丢失几百字节(如果大于 2MB)
- chatbot - Chatbase 机器人:无法加载成绩单。请尝试刷新页面
- linux - 如何将复制的文本附加到剪贴板的新行?
- installation - 如何为 g++ 提供 fftw 路径以安装 FIT-SNE
- c++ - 插槽失败 QWebSocket