问题描述
我正在使用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');
我得到错误:
有什么建议吗? 谢谢!
解决方法
我想您在from file1 import *
命令之后错过了io.flush()
。
在每个print
呼叫之后添加io.flush()
之后,我的消息开始写入日志(print
)。
我也建议为此使用docker logs -f <CONTAINER_NAME>
模块。它不缓冲地写入stderr。
关于连接器中的错误,我认为nodejs连接器根本不支持推送。