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

问题描述

我正在使用tarantool/tarantool:2.6.0 Docker映像(当前最新消息)并为该项目编写lua脚本。我尝试找出如何查看callin'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')

然后像这样从nodeJs连接器调用say_something()

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

const conn = new TarantoolConnection(connectionData);
const res = await conn.call('update_links','hello');

我得到错误

enter image description here

有什么建议吗? 谢谢!

解决方法

我想您在from file1 import * 命令之后错过了io.flush()

在每个print呼叫之后添加io.flush()之后,我的消息开始写入日志(print)。

我也建议为此使用docker logs -f <CONTAINER_NAME>模块。它不缓冲地写入stderr。

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