- https://github.com/Delgan/loguru/
- https://loguru.readthedocs.io/en/stable/api/logger.html
- https://github.com/twotwo/python-libs
# newer for poetry
curl -sSL https://install.python-poetry.org | POETRY_VERSION=1.2.1 python3 -
# install dependency
poetry install
poetry shell
# install pre-commit and run checks
pre-commit install
pre-commit run -a
loguru.logger 这是 Logger 类的实例,可以把消息分发到当前配置好的 handler 上
- 分发消息: logger.info("hello")
- 设置 handler: logger.add(sink, ...)/logger.remove(sink_id)
一但引入(import) logger,就可以用来记录程序中发生的信息。不要自己构建 Logger 实例,而是使用 from loguru import logger
使用 add 方法来处理传入的日志。
sink 是日志最终存放的地方。通过 sink 我们可以传入多种不同的数据结构,汇总如下:
sink可以传入一个 file 对象,例如 sys.stderr 或者 open('file.log', 'w') 都可以。sink可以直接传入一个 str 字符串或者 pathlib.Path 对象,其实就是代表文件路径的,如果识别到是这种类型,它会自动创建对应路径的日志文件并将日志输出进去。sink可以是一个方法,可以自行定义输出实现。sink可以是一个 logging 模块的 Handler,比如 FileHandler、StreamHandler 等等,或者一个自定义的 Handler。sink还可以是一个自定义的类,具体的实现规范可以参见官方文档。
filter 是用来判断日志是否输出的标志,可以是 callable, str 或 dict:
filter是函数时,True时会记录日志filter是str时,record.name是filter或其子类时会记录日志filter是dict时 Value 支持三种格式:str/int代表 Logger Level Name;bool
poetry install
poetry shell
pytest test_rotation.py -s