在emacs的raket模式下运行Racket代码时,我没有收到任何GC日志消息。
在DrRacket中运行以下代码会返回一个日志条目,而在Emacs REPL中则不会。
(define my-logger (make-log-receiver (current-logger) 'debug 'GC))
(collect-garbage)
(sync/timeout 1 my-logger)
在Emacs REPL情况下如何获取日志消息?
答案 0 :(得分:1)
M-x racket-logger
打开racket-logger-mode
缓冲区。更新:以上说明并没有真正回答您自己的程序未获得日志事件的原因。这是一个非常有趣的错误-谢谢!有关the issue thread的更多讨论。当我弄清楚了之后,我将尝试回到这里,并用一些有关Racket日志记录的有趣和有教育意义的东西再次更新此答案。
更新:原来这是“我在想什么?”球拍模式下的错误。我正在创建一个新的记录器:
(define global-logger (make-logger))
(current-logger global-logger)
不仅仅是使用现有的:
(define global-logger (current-logger))
现有记录器很特殊,如the Racket documentation for loggers所述:
在启动时,Racket创建一个初始记录器,该记录器用于记录来自核心运行时系统的事件。例如,每个垃圾回收都会报告一个
'debug
事件(请参见Garbage Collection)。
我已将提交推送到主题分支,并且当我从CI中获得全部绿色时,我将合并到master。不久后应该可以通过MELPA使用。