Loguru 是一个日志库, 实现简单, 功能强大, 依赖很少.
Loguru 的设计¶
Logger, 日志打印机, 所有的日志都是从 logger 发出去的.
Handler, 日志处理者, 决定了日志发到哪里去, 格式是什么, 要不要做修改, 有没有过滤器. Handler 是由
Logger.add
方法创建的, 创建后会返回一个 handler_id, 你可以用Logger.remove(handler_id)
将其删除. 默认的 handler 是发送到 stderr 的, 你可以用Logger.remove()
来删除之. 如果不给参数, remove 会删除最后一个 handler.Record, 就是一个 dict 字典, 里面不仅包含了 message, 还包含了 logger 本身的 metadata, 还有很多其他信息. 每次发送一个 log 的时候其实会生成一个 record, record 会经过 handler 的处理之后才发送.
Sink, 是 handler 的子概念, 一个 handler 最关键的就是 sink, 这个 log 要被发到哪里? 是 stderr, stdout, 还是文件?
Filter, 是 handler 的子概念, 每个 Record 会经过 handler 中的 filter 过滤以决定是否要发出去.
Bind, 生成一个新的 Logger, 并给其绑定一些 metadata.
有几点特别注意事项¶
Handler 的注册是全局有效的, 并不是说 handler 就跟 logger 互相绑定了.