对于在 kdb 中重定向标准输出,如何引导除结果之外的所有内容?

For redirecting standard output in kdb, how to direct everything but results?

所以对于查询函数,它乘积 tables。如何在不返回结果的情况下重定向标准输出?我想重定向标准输出而不重定向 table 结果。我想捕获 kdb 产生的每条消息。

所以我尝试了这个

q abc.q -p 4000 < /dev/null > kdb.log 2>&1 &.

但它也会重定向查询结果,对吗?

如果只是直接错误,那并不能捕获所有内容,对吧?除了结果,我想抓住一切。

看看下面的..(我为家庭项目写的)

.logger.on:{[pth]
  if[not ":/"~2#string[pth];-1"\n\tPlease supply absolute path to file; e.g.) .logger.on[`:/path/to/logfile]";];
 .logger.err:hopen `$string[pth],".err";
 .logger.std:hopen `$string[pth],".out";
 writeOut:{ h:(.logger.std;.logger.err)x~`err; h(y,"\n");};
 zpi:{y:-1_y; r:@[value;y;{"Error:'",x}]; $["Error:"~6#r;[e:6_r;x[`err;e];-1 e];[x[`std;y];show r]];}[writeOut;];
 `.z.pi set zpi;
 }

加载到q后,输入一些命令...

q).logger.on[`:/home/chromozorz/q/projects/myLog]
q)2+2
4
q)1+1
2
q)t:([] a:til 5;b:5?`2)
q)2+string
'type
q)2+`a
'type
q)\

现在查看创建的日志文件;

chromozorz@chromozorz:~/q/projects$ cat myLog.err
'type
'type
chromozorz@chromozorz:~/q/projects$ cat myLog.out
2+2
1+1
t:([] a:til 5;b:5?`2)

如果您不想在控制台中显示结果,那么只需编辑 zpi 定义...