将球拍作为emacs REPL运行时的GC日志记录

时间:2018-08-25 21:56:19

标签: racket

在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情况下如何获取日志消息?

1 个答案:

答案 0 :(得分:1)

  1. 确保您使用的是最新版本的球拍模式(例如latest from MELPA)。
  2. 使用 CC C-1 别名M-x racket-logger打开racket-logger-mode缓冲区。
  3. 如果您有任何问题或疑问,请随时open an issue

更新:以上说明并没有真正回答您自己的程序未获得日志事件的原因。这是一个非常有趣的错误-谢谢!有关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使用。