写入到日志文件
上面我们说的是将日志打印到控制台中,但是我们Python代码写完并且在运行当中后,我们就不可能这样玩了,所以我们需要将日志保存到一个日志文件中
完整代码如下:
import coloredlogs
import logging
def func_name():
# 创建文件handler
file_handler = logging.FileHandler('log_file.log')
# 设置日志格式
formatter = logging.Formatter('%(asctime)s - %(module)s - %(funcName)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# 安装coloredlogs并设置级别
level_styles = coloredlogs.DEFAULT_LEVEL_STYLES.copy()
coloredlogs.install(level="DEBUG", level_styles=level_styles,
fmt='%(asctime)s - %(module)s - %(funcName)s - %(levelname)s - %(message)s')
# 获取logger 并添加文件handler
logger = logging.getLogger()
logger.addHandler(file_handler)
# 移除默认StreamHandler
logger.removeHandler(logging.StreamHandler())
# 测试输出日志
logger.debug('debug message')
logger.info('info message')
logger.error('error message')
logger.warning('warning message')
func_name()
打开我们log_file.log文件后,就可以看到我们生成的日志信息
可以看到我们生成的日志文件中不同级别的日志还是使用的是一样的颜色。那这是为什么呢?
其实coloredlogs 库只是在终端输出时给日志添加了颜色,但写入文件时colors并不能保留。
这是因为终端输出和文件输出使用的是不同的handler:
- 终端输出使用的是StreamHandler,可以 interpreter 处理ANSI色彩编码显示颜色。
- 文件输出使用的是FileHandler,写入的仅是纯文本,无法保存ANSI编码的颜色信息。
ANSI色彩编码只有在支持其的终端才能渲染为颜色,一旦写入文件就会失去这些编码信息。所以使用coloredlogs时,日志文件内实际保存的是未着色的原始文本。
如果想要文件中也保存颜色信息,可以考虑使用支持ANSI色彩的文件格式,比如HTML。然后通过logging模块支持的HTML Formatter输出彩色日志到HTML文件中,不过这种情况下就失去了纯文本文件的可阅读性。
综上,coloredlogs只是在终端美化日志展示效果,文件输出不保存颜色是正常情况。如果必须存储颜色,可以输出为HTML等格式,但复杂度会增加。
-
文件
+关注
关注
1文章
571浏览量
24848 -
日志
+关注
关注
0文章
139浏览量
10690 -
python
+关注
关注
56文章
4811浏览量
85103
发布评论请先 登录
相关推荐
Wine开发系列——如何使用Wine日志调试问题
hex文件如何查看原c语言代码
linux日志管理之journalctl命令
![linux<b class='flag-5'>日志</b>管理之journalctl命令](https://file1.elecfans.com/web2/M00/03/80/wKgaoma8hKeAQMsTAABtScTXN6w548.png)
日志框架简介-Slf4j+Logback入门实践
![<b class='flag-5'>日志</b>框架简介-Slf4j+Logback入门实践](https://file1.elecfans.com//web2/M00/FF/2D/wKgZomandamADVaeAADrIxKpkeI928.jpg)
如何实现Python复制文件操作
python解析netflow数据到csv的流程详解
![<b class='flag-5'>python</b>解析netflow数据<b class='flag-5'>到</b>csv的流程详解](https://file1.elecfans.com/web2/M00/D9/FE/wKgaomYpzAiAPrQGAABVCN7G14M811.png)
【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现
![【嵌入式SD NAND】基于FATFS/Littlefs<b class='flag-5'>文件</b>系统的<b class='flag-5'>日志</b>框架实现](https://file1.elecfans.com//web2/M00/C4/65/wKgZomXyza2APA-TACTREhVCSEw691.png)
【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现
【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现
![【嵌入式SD NAND】基于FATFS/Littlefs<b class='flag-5'>文件</b>系统的<b class='flag-5'>日志</b>框架实现](https://file1.elecfans.com/web2/M00/C5/4F/wKgaomXyzQWAOuZPAADeOXPjtqE725.png)
评论