配置类config_file:
从configparser进口configparser 类config_file: def __init__(自我、conf_filePath编码=皍tf - 8”): #打开配置文件,实例化ConfigParser类,并以默认utf - 8的编码格式读取文件 自我。cf=ConfigParser () self.cf.read (conf_filePath编码) def get_Int_Value(自我、部分选项): #获取整数 返回self.cf.getint(部分,选项) def get_boolValue(自我、部分选项): #获取布尔值 返回self.cf.getboolean(部分,选项) def get_strValue(自我、部分选项): #获取字符串类型的值 返回self.cf.get(部分,选项) def get_floatValue(自我、部分选项): #获取浮点数的值 返回self.cf.getfloat(部分,选项) def get_sections(自我): #获取所有的部分 返回self.cf.sections () def get_options(自我,部分): #获取所有的选项 返回self.cf.options(部分)
日志类:
从configparser进口configparser 导入日志 从config_file进口config_file 类Log_Test (config_file): #继承config_file def日志(自我): 记录器=logging.getLogger (self.get_strValue(‘日志’,‘logger_name)) #从配置文件读取日志程序名 logger.setLevel(自我。get_strValue(‘日志’,‘logger_level)) #设置记录器收集器的收集日志级别 format_logger=logging.Formatter (self.get_strValue(“日志”、“logger_format”)) 如果(self.get_boolValue(‘日志’,‘logger_out)): 处理=logging.StreamHandler() #指定输出到控制台控制台 handle.setLevel(自我。get_strValue(‘日志’,‘logger_level)) #读取日志等级并设定日志的级别 handle.setFormatter (format_logger) #指定日志格式 其他: 处理=logging.FileHandler (self.get_strValue(‘日志’,‘logger_filepath’),编码=皍tf - 8”) handle.setLevel(自我。get_strValue(‘日志’,‘logger_level)) #读取日志等级并设定日志的级别 handle.setFormatter (format_logger) #指定日志格式 logger.addHandler(处理) 返回日志
日志配置文件logging.cfg:
(日志) #日志收集器 logger_name=测试 #日志级别级别需要大写调试,在信息——在警告——祝辞/致命的错误——在至关重要的 logger_level=调试 #日志输出格式注意转义 logger_format=% % (asctime) s - % %(文件名)s - % % (levelname) s -日志信息:% %(消息) #日志是否输出到控制台真或假 logger_out=False #日志输出指定文件地址 logger_filepath=logging_Test.log
将读取配置文件类进行封装,日志类继承配置类。
<强> Python2/Python3自定义日志类教程强>
<强>一、说明强>
1.1背景说明
Python的日志记录功能是比较丰富的支持不同层次的日志输出,但或是我们想在日志前输出时间,或是我们想要将日志输入到文件,我们还是想要自定义日志类。
之前自己也尝试写过但感觉文档太乱看不懂怎么写,今天有人拿个半成品来问为什么代码报的错,在其基础上改造了一下。
1.2日志级别说明
日志日志级别及对应值如下,默认情况下直接运行只有信息及以上级别才会输出(本质上是大于等于20才会输出),调试模式运行调试日志才会输出。
可以通过自定义输出日志级别,指定直接运行输出什么级别的日志,不过调试模式打印的日志应该是不可以修改的。
水平
数值 关键
50
错误
40
警告
30
信息 20
调试
10
NOTSET
0
<强>二,实现代码强>
2.1 Python2实现代码
# - * -编码:utf - 8 - * 进口操作系统 进口日期时间 导入日志 类LogConfig: def __init__(自我,log_type=翱刂铺ā?: #指定日志输出到控制台时的初始化 如果log_type==翱刂铺ā?=logging.INFO logging.basicConfig(水平, 格式=' % (asctime) % (levelname) %(消息)年代', datefmt=' % Y - % m - H % d %: % m: % S的, ) #指定日志输出到文件的初始化 elif log_type==拔募? #创建存放日志的目录 如果不是os.path.exists(“。/日志”): os.mkdir(’。/日志”) #操作系统本身不允许文件名包含:等特殊字符,所以这里也不要用,不然赋给文件名时会报的错 nowTime=datetime.datetime.now () .strftime (Y ' % - % - % d ') file_name='。/日志/% s。日志' % nowTime # python2.7也有logging.basicConfig(),但只直接用logging.basicConfig(),写中文时会报的错 #所以为风格统一,我们这里不使用logging.basicConfig(),全通过组设置 root_logger=logging.getLogger () root_logger.setLevel (logging.INFO) 处理程序=日志记录。文件句柄(文件名=file_name编码=皍tf - 8”模式=' a ') 格式化程序=logging.Formatter (“% (asctime) % (levelname) %(消息)年代”) handler.setFormatter (formatter) root_logger.addHandler(处理器) def getlog(自我): 记录器=logging.getLogger () 返回日志记录器 if __name__==癬_main__”: # log_type=翱刂铺ā? log_type="文件" 记录器=LogConfig (log_type) .getLogger () logger.debug(由调试打印) logger.info(的打印信息”) 记录器。警告(打印警告)python3配置日志日志类的操作