我正在使用ocaml-dns。
在这里你可以看到它
printf "retrying query for %d times\n%!" (4-count);
它把我的日志弄得乱七八糟!我已经在处理失败,我不在乎那个输出,我想让它静音。在不分叉和修改库本身的情况下如何做到这一点?我可以以某种方式缓冲它的输出吗?
谢谢
如果您使用的是类 Unix 系统,则可以将标准输出重定向到“/dev/null”。像这样的东西可能会起作用:
let nullout = open_out "/dev/null" in
Unix.dup2 (Unix.descr_of_out_channel nullout) Unix.stdout
这是一个显示它有效的会话(至少对我在 OS X 上):
$ ocaml
OCaml version 4.01.0
# #load "unix.cma";;
# Sys.system "echo unwanted message";;
Error: Unbound value Sys.system
# Sys.command "echo unwanted message";;
unwanted message
- : int = 0
# let nullout = open_out "/dev/null" in
Unix.dup2 (Unix.descr_of_out_channel nullout) Unix.stdout;;
Sys.command "echo unwanted message";;
Sys.command "echo error message >&2";;
error message
如果你需要在其他时候使用标准输出,你的问题就更糟了。我认为,您可以通过一些额外的用途将 stdout 重定向回原来的位置dup
。