如何在Tarantool Docker容器中查看print()结果

如何在Tarantool Docker容器中查看print()结果,tarantool,Tarantool,我正在使用tarantool/tarantool:2.6.0Docker image(目前最新版本),并为项目编写lua脚本。我试图了解如何查看调用“print()函数”的结果。在print()不工作的情况下调试代码是相当困难的。 在tarantool控制台中,print()也没有效果 使用简单打印() Docs说print()适用于stdout,但当我通过docker logs-f查看容器日志时,没有看到任何结果 我还尝试将容器的日志驱动程序设置为local。比我得到一次打印到容器日志,但只有

我正在使用
tarantool/tarantool:2.6.0
Docker image(目前最新版本),并为项目编写lua脚本。我试图了解如何查看调用“
print()
函数”的结果。在print()不工作的情况下调试代码是相当困难的。
在tarantool控制台中,print()也没有效果

使用简单打印()

Docs说print()适用于
stdout
,但当我通过
docker logs-f
查看容器日志时,没有看到任何结果

我还尝试将容器的日志驱动程序设置为
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')
然后从nodeJs连接器调用
say_something()
,如下所示:

const TarantoolConnection = require('tarantool-driver');

const conn = new TarantoolConnection(connectionData);
const res = await conn.call('update_links', 'hello');
我得到一个错误:

有什么建议吗?
塔克斯

我想您错过了
io.flush()
after
print
命令

在我添加了
io.flush()
之后,在每次
print
调用之后,我的消息开始写入日志(
docker logs-f

此外,我建议使用
log
模块来实现此目的。它在不缓冲的情况下写入stderr

关于连接器中的错误,我认为nodejs连接器根本不支持推送