我正在尝试将 stdout 永久重定向到一个文件,但我能找到的所有关于这样做的示例都涉及在 let 或使用标准输出全局的 with-open-file 中这样做。有没有办法可以进行应用程序范围的重定向?
编辑:这是我尝试使用标准输出进行重定向的方式:
(Setf *log* (open "/Users/Mike/Desktop/some.txt" :direction :output :if-exists :append))
(Setf *standard-output* *log*)
(print "Test")
probe-file
这会停止向 REPL 的输出,但print 调用中的文件(确实存在并且被 看到)中没有显示任何内容。
编辑:我试过使用 Dribble 功能:
(Dribble "/Users/Mike/Desktop/some.txt")
(format t "hello")
但我收到以下错误:
错误:通用函数没有适用的方法:#STANDARD-GENERIC-FUNCTION CCL::STREAM-SET-COLUMN #x30200006557F 使用参数调用时:(#0) 执行时:#,正在处理 Listener(11)。键入 cmd-/ 继续,cmd-。要中止,cmd-\ 以获取可用重新启动的列表。如果继续:尝试再次调用它类型:?其他选项。