概述
最近写的自动化工具需要日志,使用了 logging 模块和 colorlog 模块,塑造了颜色丰富的控制台输出,非常喜欢。
我在代码中,通过对 logging 模块的 logger 进行自己的定制,得到我想要的 logger,既能在控制台彩色输出,也能在我指定的文件中动态存储日志信息。
import os
import sys
import platform
import sys,ctypes
import logging
import colorlog
from smb.SMBConnection import SMBConnection
Log_File = 'athena_log.log'
exit_word = r' Athena run exit! Athena run exit! Athena run exit!'.center(115,"*")
Athena_Version = "0.9_20220916"
GUI_CMD = "CMD"
Debug = False
def isadmin():
if(ctypes.windll.shell32.IsUserAnAdmin()==1):
return(True)
else:
return(False)
class LogHandler(object):
def __init__(self, filename, level=logging.INFO):
self.logger = logging.getLogger(filename)
self.log_colors_config = {
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'red',
}
formatter = colorlog.ColoredFormatter(
'%(log_color)s%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s',
log_colors=self.log_colors_config)
# 设置日志级别
self.logger.setLevel(level)
# 往屏幕上输出
console_handler = logging.StreamHandler()
# 输出到日志文件
if(isadmin()):
file_handler = logging.FileHandler(filename=filename, mode='a', encoding='utf8')
file_formatter = logging.Formatter('%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s')
# 设置写入文件的格式
file_handler.setFormatter(file_formatter)
# 设置屏幕上显示的格式
console_handler.setFormatter(formatter)
# 把对象加到logger里
self.logger.addHandler(console_handler)
if(isadmin()):
self.logger.addHandler(file_handler)
my_loghandler = LogHandler(Log_File, level=logging.DEBUG)
def get_logger():
return (my_loghandler)
下面是使用的情况
最后
以上就是活泼外套为你收集整理的logging 模块和 colorlog 模块的全部内容,希望文章能够帮你解决logging 模块和 colorlog 模块所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复