gpt4 book ai didi

python - 如何使用一种格式化程序来记录文件并使用彩色格式化程序来记录终端?

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:13 24 4
gpt4 key购买 nike

我希望记录到文件并在终端窗口中显示相同的信息,但具有漂亮的颜色(使用 colorlog 或其他跨平台日志着色器)。这就是我所拥有的:

import logging
import os

import colorlog


def logger(log_filepath='my_app.log', logger_name='myAppLogger'):
"""Log plain text to file and to terminal with colors"""

logger = logging.getLogger(logger_name)

# Log to file (but not to terminal)
logfile_handler = logging.FileHandler(log_filepath)
plain_formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
logfile_handler.setFormatter(plain_formatter)
logfile_handler.setLevel(logging.DEBUG)

# Logging info level to stdout with colors
terminal_handler = colorlog.StreamHandler()
color_formatter = colorlog.ColoredFormatter(
"%(log_color)s%(levelname)-8s%(reset)s %(asctime)s %(blue)s%(message)s",
datefmt=None,
reset=True,
log_colors={
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'red,bg_white',
},
secondary_log_colors={},
style='%'
)
terminal_handler.setLevel(logging.DEBUG)
terminal_handler.setFormatter(color_formatter)

# Add handlers to logger
logger.addHandler(logfile_handler)
logger.addHandler(terminal_handler)

return logger


my_logger = logger()

my_logger.debug('Testing debug')
my_logger.info('Testing info')
my_logger.warning('Testing warning')
my_logger.error('Testing error')
my_logger.critical('Testing critical')

这在终端中为我提供了以下内容(带颜色):

WARNING  2017-01-23 20:30:55,180 Testing warning
ERROR 2017-01-23 20:30:55,180 Testing error
CRITICAL 2017-01-23 20:30:55,181 Testing critical

...日志文件中的内容(没有颜色,只有纯文本):

2017-01-23 20:30:55,180 WARNING Testing warning
2017-01-23 20:30:55,180 ERROR Testing error
2017-01-23 20:30:55,181 CRITICAL Testing critical

为什么级别不对?

最佳答案

您的(原始)代码中有两个问题。第一个是一个小错误,您将 color_formatter 分配给日志处理程序而不是终端处理程序。

第二个问题 - 您在终端中没有看到低于 WARNING 级别的日志 - 是由于您在终端处理程序上设置最低日志记录级别而引起的 但不是记录器本身。您需要更换:

terminal_handler.setLevel(logging.DEBUG)

与:

logger.setLevel(logging.DEBUG)

根据the documentation ,记录器默认设置为 WARNING 日志级别,如果我的直觉是正确的,那么仅将处理程序设置为较低的日志级别将不起作用,因为处理程序只能处理记录器提供的内容 - 警告级日志及以上。

关于python - 如何使用一种格式化程序来记录文件并使用彩色格式化程序来记录终端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41814115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com