python项目中输出指定颜色的日志

起因

在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中。而一般的应用服务器,第三方库,甚至服务器的一些通告也会在终端中显示,这样就搅乱了我们想要的信息。
解决
我们可以通过对有用的信息设置不同颜色来达到醒目的效果,因为我平时都是在linux下开发,而linux终端中的颜色是用转义序列控制的,转义序列是以ESC开头,可以用\033完成相同的工作(ESC的ASCII码用十进制表示就是27,等于用八进制表示的33)。

书写格式,和相关说明如下:

格式:\033[显示方式;前景色;背景色m

说明
前景色 背景色 颜色
—————————————
30 40 黑色
31 41 红色
32 42 绿色
33 43 黃色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
显示方式 意义
————————-
0 终端默认设置
1 高亮显示
4 使用下划线
5 闪烁
7 反白显示
8 不可见

例子
\033[1;31;40m <!–1-高亮显示 31-前景色红色 40-背景色黑色–>
\033[0m <!–采用终端默认设置,即取消颜色设置–>
下面是我在python中使用的方式:

print ‘\033[1;31;40m’
print ‘*’ * 50
print ‘*HOST:\t’, request.META.get(‘REMOTE_ADDR’)
print ‘*URI:\t’, request.path
print ‘*ARGS:\t’, QueryDict(request.body)
print ‘*TIME:\t’, time.time() – request.start_time
print ‘*’ * 50
print ‘\033[0m’

效果图如下:
python项目中输出指定颜色的日志
当然这只是一种简单的实现方式,而且仅在linux下有效,其它方式可以使用termcolor,或者参考ipython的console实现(pyreadline)。