吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1784|回复: 6
收起左侧

[Python 原创] Python3 的彩色日志包

[复制链接]
thepoy 发表于 2021-5-21 15:34
本帖最后由 thepoy 于 2021-5-21 15:47 编辑

源代码很简单:https://github.com/thep0y/python-logger

使用方法

安装

pip install colorful-logger

使用

可以直接使用默认的logger实例输出日志,默认的日志等级是warning

from colorful_logger.logger import logger

logger.debug("This is a debug message.")
logger.info("This is a info message.")
logger.warning("This is a warning message.")
logger.error("This is a error message.")
logger.fatal("This is a fatal message.")

default logger

也可以自定义日志等级,保存日志到文件:

import logging
from colorful_logger.logger import get_logger

# name 参数没有什么用,不需要传此参数,因为当前的日志不输出 name 字段
logger = get_logger(name="logger", level=logging.DEBUG, file_path="./test.log")

logger.debug("This is a debug message.")
logger.info("This is a info message.")
logger.warning("This is a warning message.")
logger.error("This is a error message.")
logger.fatal("This is a fatal message.")

custom logger

日志文件./test.log内容

[DEBUG] 2021-05-21 15:08:42 test.py:8 - This is a debug message.
[INFO] 2021-05-21 15:08:42 test.py:9 - This is a info message.
[WARNING] 2021-05-21 15:08:42 test.py:10 - This is a warning message.
[ERROR] 2021-05-21 15:08:42 test.py:11 - This is a error message.
[CRITICAL] 2021-05-21 15:08:42 test.py:12 - This is a fatal message.

输出到文件的日志没有使用彩色格式,因为我个人觉得,保存到文件中的日志没有必要是彩色的。

FATALCRITICAL本就是影响程序运行的严重错误,而 python 默认的日志管理器中此方法与其他方法没有什么区别,这让我觉得莫名其妙,在本包中,我在fatal方法中加入了sys.exit(1)用来退出程序。如果在程序出现严重错误时不想退出程序,可以调用critical方法。

自定义 logger

get_logger方法:

def get_logger(
    name: Optional[str] = None,
    level: str = logging.WARNING,
    show: bool = True,
    file_path: Optional[str] = None,
) -> Logger: ...
  • name 对我来说没有用,以后可能会删除此参数
  • level 日志等级
  • show 是否在终端中显示。如果你想用此彩色日志包的话,通常是想在终端显示的吧
  • file_path 是否保存到文件。默认是None,当其不是None时,会保存到对应的文件中

TODO

  • [ ] 改为异步日志,毕竟加入色彩后可能会影响整个程序的性能
  • [ ] 改写保存文件的 formatter,使 fatal日志和critical日志分开,一个退出程序,一个不退出程序

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
笙若 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

apie 发表于 2021-5-21 17:58
这个彩色日志包的存盘格式是怎么样的?是不是通过在一些字段前后加上颜色标识来实现的(类似html标签),所以还需要用特定的一些console或文本软件才能看到彩色?
 楼主| thepoy 发表于 2021-5-21 18:10
apie 发表于 2021-5-21 17:58
这个彩色日志包的存盘格式是怎么样的?是不是通过在一些字段前后加上颜色标识来实现的(类似html标签),所 ...

对,就是类似HTML标签,linux 、 Mac  和 windows terminal都支持,cmd和powershell不支持。
6767 发表于 2021-5-21 19:56
https://docs.python.org/3/howto/ ... g-advanced-tutorial
根据 python stdlib的logging,最好是把彩色输出做成单独包,(logger,filter,formater,handler),

顺便,logging的name默认应该是__name__;
 楼主| thepoy 发表于 2021-5-21 20:40
本帖最后由 thepoy 于 2021-5-21 20:42 编辑
6767 发表于 2021-5-21 19:56
https://docs.python.org/3/howto/logging.html#logging-advanced-tutorial
根据 python stdlib的logging ...

__name__ 只是演示使 用一个 str 而已,诸多内置包都只是传入一个自定义的 str,比如 asyncio 使用 logging 时传入的就是 "asynico" 这个字符串,看看官方文档的使用示例也是一样传入的是一个自定义的 str。
当前是在默认的 Logger 基础上增加的代码,性能确实会有损失,以后有可能全部重写。
Golang 的已经重写一遍了,当前我对 Python 的 logger 的要求只是能够显示彩色,目前是满足的。
Ercilan 发表于 2021-5-21 22:46
apie 发表于 2021-5-21 17:58
这个彩色日志包的存盘格式是怎么样的?是不是通过在一些字段前后加上颜色标识来实现的(类似html标签),所 ...
yoyoma211 发表于 2021-5-22 14:54
这个有点帅啊,支持了先
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表