三、添加日志功能

xiaoxiao2021-02-28  105

本过程只做自己记录只用,不具体到每一步的过程,默认看客已经具备:google查找资料,eclipse添加组件,eclipse创建项目等基本技能。 工程中添加日志记录 logging.conf

# 定义logger模块,root是父类,必需存在的,其它的是自定义。 # logging.getLogger(NAME)便相当于向logging模块注册了一种日志打印 # name 中用 . 表示 log 的继承关系 [loggers] keys=root,myLogger # 定义handler [handlers] keys=infoHandler,errorHandler,stdoutHandler,debugHandler # 定义格式化输出 [formatters] keys=infoFmt,errorFmt,debugFmt #-------------------------------------------------- # 实现上面定义的logger模块,必需是[logger_xxxx]这样的形式 #-------------------------------------------------- # [logger_xxxx] logger_模块名称 # level 级别,级别有DEBUG、INFO、WARNING、ERROR、CRITICAL # handlers 处理类,可以有多个,用逗号分开 # qualname logger名称,应用程序通过 logging.getLogger获取。对于不能获取的名称,则记录到root模块。 # propagate 是否继承父类的log信息,0:否 1:是 [logger_root] level=DEBUG handlers=errorHandler,infoHandler,debugHandler [logger_myLogger] handlers=errorHandler,infoHandler,debugHandler propagate=0 level=DEBUG qualname=myLogger #-------------------------------------------------- # handler #-------------------------------------------------- # [handler_xxxx] # class handler类名 # level 日志级别 # formatter,上面定义的formatter # args handler初始化函数参数 [handler_infoHandler] class=logging.handlers.TimedRotatingFileHandler level=INFO formatter=infoFmt args=('poseidon.log', ) [handler_debugHandler] class=logging.handlers.TimedRotatingFileHandler level=DEBUG formatter=debugFmt args=('poseidon_debug.log', ) [handler_errorHandler] class=StreamHandler level=ERROR formatter=errorFmt args=(sys.stderr,) [handler_stdoutHandler] class=StreamHandler level=INFO formatter=infoFmt args=(sys.stdout,) # When computing the next rollover time for the first time (when the handler is created), # the last modification time of an existing log file, or else the current time, # is used to compute when the next rotation will occur. # 这个功能太鸡肋了,是从handler被创建的时间算起,不能按自然时间 rotation 切分,除非程序一直运行,否则这个功能会有问题 # 临时解决方案参考下面的链接:Python 多进程日志记录 # http://blogread.cn/it/article/4175?f=wb2 #args=(sys.stderr,) #-------------------------------------------------- # 日志格式 #-------------------------------------------------- # %(asctime)s 年-月-日 时-分-秒,毫秒 2013-04-26 20:10:43,745 # %(filename)s 文件名,不含目录 # %(pathname)s 目录名,完整路径 # %(funcName)s 函数名 # %(levelname)s 级别名 # %(lineno)d 行号 # %(module)s 模块名 # %(message)s 消息体 # %(name)s 日志模块名 # %(process)d 进程id # %(processName)s 进程名 # %(thread)d 线程id # %(threadName)s 线程名 [formatter_infoFmt] format=%(asctime)s %(levelname)s %(module)s %(funcName)s %(message)s datefmt= class=logging.Formatter [formatter_debugFmt] format=%(asctime)s %(levelname)s %(module)s %(funcName)s %(message)s datefmt= class=logging.Formatter [formatter_errorFmt] format=%(asctime)s %(levelname)s %(module)s %(funcName)s %(message)s datefmt= class=logging.Formatter

main.py中加载logging.conf配置

logConfFile = psettings.ROOT_DIR + os.sep + 'config' + os.sep + 'logging.conf' # 初始化日志记录 logging.config.fileConfig(logConfFile, disable_existing_loggers=False) logger = logging.getLogger('myLogger')

handler.py中可以获取

self.logger = logging.getLogger('myLogger.handler.BasicHandler')

参照文章: https://my.oschina.net/leejun2005/blog/126713

转载请注明原文地址: https://www.6miu.com/read-27623.html

最新回复(0)