# 定义一个日志收集器: logger logging.getLogger( test.py ) # 没有参数默认为root 若写入参数 返回参数名称 # 定义日志收集器的级别 logger.setLevel(logging.DEBUG) # 设置日志的格式 fmt logging.Formatter( %(asctime)s-%(name)s-%(levelname)s-%(message)s ) # 将日志输出到指定文件 file_handler logging.FileHandler( ../log/mylog.txt ) # 设置日志处理器级别 file_handler.setLevel(logging.DEBUG) # 日志处理器按照指定格式处理日志 file_handler.setFormatter(fmt) # 输出到控制台 ch logging.StreamHandler() # 设置日志处理器级别 ch.setLevel(logging.DEBUG) # 日志处理器按照指定格式处理日志 ch.setFormatter(fmt) # 收集器和处理器对接 logger.addHandler(file_handler) # 输出到文件 logger.addHandler(ch) # 输出到控制台
本小白在封装日志模块时遇到如下问题 仅作为总结
1、日志的格式、级别均可以存放在config.ini中 在读取config.ini文件时遇到如下问题
1 os.path.dirname输出的时不带本文件的绝对路径 os.path.abspath输出的是带本文件的绝对路径 而且有斜杠和反斜杠之分
print(os.path.dirname(__file__)) print(os.path.abspath(__file__))
输出
C:/Users/Acer/Desktop/demo3/demo_1
C:UsersAcerDesktopdemo3demo_11.py
2 读取 config.ini中 ‘ %(asctime)s-%(name)s-%(levelname)s-%(message)s ’类型字段时 需要用到的RawConfigParser模块
def getconfig(cls): config RawConfigParser() # 实类化 config.read(cls.configpath,encoding utf-8 )



