Python 颜色输出

Python | Django | termcolor | colorama | colorlog | 颜色 | 日志 | 控制台

Posted by luoruiqing on July 27, 2020

文本/控制台

有以下两个包用于彩色输出.

termcolor

推荐用于控制台输出, 简单的颜色输出, 第二个参数为颜色类型,对应 termcolor.COLORS

1
2
3
4
from termcolor import colored

print(colored('hello', 'red'), colored('world', 'green'))
#>>> hello world

colorama

1
2
3
from colorama import Fore, Style
print(f'This is {Fore.GREEN}color{Style.RESET_ALL}!')
#>>> This is color!

日志 colorlog

日志样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import colorlog

handler = colorlog.StreamHandler()
handler.setFormatter(colorlog.ColoredFormatter(
    '%(log_color)s%(asctime)s [%(levelname)8s]%(name)s:%(message)s'
))

logger = colorlog.getLogger('example')
logger.addHandler(handler)

# 使用
logger.debug(" 这是 DEBUG 级别的日志 ")
logger.info(" 这是 INFO 级别的日志 ")
logger.warn(" 这是 WARNING 级别的日志 ")
logger.error(" 这是 ERROR 级别的日志 ")
logger.critical(" 这是 CRITICAL 级别的日志 ")
# debug / info 默认未开启
#>>> 2020-01-01 00:00:00,001 [ WARNING]:  这是 WARNING 级别的日志 
#>>> 2020-01-01 00:00:00,001 [   ERROR]:  这是 ERROR 级别的日志 
#>>> 2020-01-01 00:00:00,001 [CRITICAL]:  这是 CRITICAL 级别的日志

Django日志样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# ...
# 日志颜色配置
LOG_COLORS_CONFIG = {
    'DEBUG': 'cyan',
    'INFO': 'green',
    'WARNING': 'yellow',
    'ERROR': 'red',
    'CRITICAL': 'red',
}

# BASE_DIR 为Django工程目录
# 日志配置配置
LOGGER_FILE_PATH = f'{BASE_DIR}/logs/logging.log'
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'class': 'colorlog.ColoredFormatter',
            'format': '%(log_color)s%(asctime)s [%(levelname)s  %(module)s %(process)d %(thread)d] %(message)s',
            'log_colors': LOG_COLORS_CONFIG,
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename': LOGGER_FILE_PATH,
            'when': 'midnight',  # 天
            'interval': 1,
            'backupCount': 365,  # 保留一年
            'formatter': 'verbose',
            'encoding': 'utf-8',  # 编码utf-8
        }
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],  # 在文件和控制台打印
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}