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