简介
elog 的设计灵感来源于 Log4j (Java)、Winston (Node.js) 和 loguru (Python) 等流行的日志框架。在开发复杂的 Emacs 插件时,简单的 message 函数往往不够用,而 elog 提供了结构化、可配置且易于使用的日志记录功能,帮助你更好地调试和监控你的程序。
主要特性
- 多级日志支持:提供 TRACE, DEBUG, INFO, WARNING, ERROR, FATAL 六个级别,并支持最小级别过滤。
- 多输出端 (Handlers):支持同时输出到 Buffer、文件或回显区 (Echo area)。
- 强大的上下文支持 (Context):类似 Log4j 的 MDC,支持全局、Logger 级或代码块级 (Block scope) 的上下文数据绑定。这对于追踪请求或事务非常有帮助。
- 自定义格式:支持通过占位符(如 %t, %l, %n)完全自定义日志格式。
- 自动 Buffer 轮转:自动清理旧日志行,保持 Buffer 大小可控,防止占用过多内存。
- 彩色输出:默认支持彩色高亮,不同级别显示不同颜色,一目了然。
- 性能优化:提供条件宏 (如 elog-when-debug),在未启用级别时直接跳过参数求值,减少性能开销。
- 异常捕获:提供 elog-catch 宏,方便地捕获并记录代码块中的异常。
快速上手
基本使用
(require 'elog)
(defun elog-example-basic ()
"Demonstrate basic logging functionality."
(interactive)
(let ((logger (elog-logger :name "basic-example" :level 'debug)))
;; Log messages at different levels
(elog-trace logger "This is a TRACE message (won't show at debug level)")
(elog-debug logger "This is a DEBUG message")
(elog-info logger "This is an INFO message")
(elog-warning logger "This is a WARNING message")
(elog-error logger "This is an ERROR message")
(elog-fatal logger "This is a FATAL message")
;; View the log buffer
(elog-log-view logger)))
总结
elog 旨在填补 Elisp 生态中高级日志库的空白。无论你是插件开发者还是喜欢折腾 Emacs 配置的用户,希望它能对你有所帮助。
详细的设置和用法请看 github 文档,更多的例子请看 elog/elog-examples.el。
