我正在尝试使用螺栓(http://bolt.x9c.fr)来记录我的程序。我的开发环境由 Mac OS X 上的 OCaml 4.0.1、Opam 和 Core 组成。在 Real World Ocaml 之后,编译过程由 corebuild 管理。
使用 corebuild 编译,Bolt 不会产生任何日志。为了进行简单的测试,我使用了 Bolt 文档中的示例。
这是简单的测试源:
let funct n =
LOG "funct(%d)" n LEVEL DEBUG;
for i = 1 to n do
print_endline "..."
done
let () =
LOG "application start" LEVEL TRACE;
funct 3;
funct 7;
LOG "application end" LEVEL TRACE
这是配置文件(bolt.config):
logger "" {
level = trace;
filter = all;
layout = default;
mode = direct;
output = file;
name = "log";
}
要运行,必须使用配置文件的路径定义环境变量 BOLT_CONFIG:
BOLT_CONFIG=./bolt.config
编译使用:
ocamlc -c -I /Users/ivan/.opam/system/lib/bolt bolt.cma -pp 'camlp4o /Users/ivan/.opam/system/lib/bolt/bolt_pp.cmo' test.ml
ocamlc -o test.byte -I /Users/ivan/.opam/system/lib/bolt unix.cma dynlink.cma bolt.cma test.cmo
然后运行就可以了
但使用 corebuild 编译:
corebuild -pkgs Bolt -libs dynlink test.byte
测试运行但没有日志。我认为corebuild使用的编译参数中有一些东西。Real World OCaml 建议使用 corebuild 但现在我认为 Core 参数和 Bolt 在某种程度上“不兼容”或者我忘记了一些东西。