Python3 的彩色日志包
本帖最后由 thepoy 于 2021-5-21 15:47 编辑源代码很简单:https://github.com/thep0y/python-logger
## 使用方法
### 安装
```shell
pip install colorful-logger
```
### 使用
可以直接使用默认的`logger`实例输出日志,默认的日志等级是`warning`:
```python
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.")
```
!(https://cdn.jsdelivr.net/gh/thep0y/image-bed/md/1621580826694.png)
也可以自定义日志等级,保存日志到文件:
```python
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.")
```
!(https://cdn.jsdelivr.net/gh/thep0y/image-bed/md/1621581068178.png)
日志文件`./test.log`内容
```
2021-05-21 15:08:42 test.py:8 - This is a debug message.
2021-05-21 15:08:42 test.py:9 - This is a info message.
2021-05-21 15:08:42 test.py:10 - This is a warning message.
2021-05-21 15:08:42 test.py:11 - This is a error message.
2021-05-21 15:08:42 test.py:12 - This is a fatal message.
```
输出到文件的日志没有使用彩色格式,因为我个人觉得,保存到文件中的日志没有必要是彩色的。
>`FATAL`或`CRITICAL`本就是影响程序运行的严重错误,而 python 默认的日志管理器中此方法与其他方法没有什么区别,这让我觉得莫名其妙,在本包中,我在`fatal`方法中加入了`sys.exit(1)`用来退出程序。如果在程序出现严重错误时不想退出程序,可以调用`critical`方法。
## 自定义 logger
`get_logger`方法:
```python
def get_logger(
name: Optional = None,
level: str = logging.WARNING,
show: bool = True,
file_path: Optional = None,
) -> Logger: ...
```
- *name* 对我来说没有用,以后可能会删除此参数
- *level* 日志等级
- *show* 是否在终端中显示。如果你想用此彩色日志包的话,通常是想在终端显示的吧
- *file_path* 是否保存到文件。默认是`None`,当其不是`None`时,会保存到对应的文件中
## TODO
- [ ] 改为异步日志,毕竟加入色彩后可能会影响整个程序的性能
- [ ] 改写保存文件的 formatter,使 `fatal`日志和`critical`日志分开,一个退出程序,一个不退出程序
这个彩色日志包的存盘格式是怎么样的?是不是通过在一些字段前后加上颜色标识来实现的(类似html标签),所以还需要用特定的一些console或文本软件才能看到彩色? apie 发表于 2021-5-21 17:58
这个彩色日志包的存盘格式是怎么样的?是不是通过在一些字段前后加上颜色标识来实现的(类似html标签),所 ...
对,就是类似HTML标签,linux 、 Mac和 windows terminal都支持,cmd和powershell不支持。 https://docs.python.org/3/howto/logging.html#logging-advanced-tutorial
根据 python stdlib的logging,最好是把彩色输出做成单独包,(logger,filter,formater,handler),
顺便,logging的name默认应该是__name__;
本帖最后由 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 的要求只是能够显示彩色,目前是满足的。 apie 发表于 2021-5-21 17:58
这个彩色日志包的存盘格式是怎么样的?是不是通过在一些字段前后加上颜色标识来实现的(类似html标签),所 ...
[控制台终端输出颜色 - opangle - 博客园](https://www.cnblogs.com/opangle/p/4082692.html) 这个有点帅啊,支持了先
页:
[1]