本文共 2652 字,大约阅读时间需要 8 分钟。
logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。
print也可以输入日志,logging相对print来说更好控制输出在哪个地方,怎么输出及控制消息级别来过滤掉那些不需要的信息。 一条日志信息对应的是一个事件的发生,而一个事件通常需要包括以下几个内容: 事件发生时间 事件发生位置 事件的严重程度--日志级别 事件内容 上面这些都是一条日志记录中可能包含的字段信息,当然还可以包括一些其他信息,如进程ID、进程名称、线程ID、线程名称等。 日志格式就是用来定义一条日志记录中包含那些字段的,且日志格式通常都是可以自定义的。'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''#作者:cacho_37967865#博客:https://blog.csdn.net/sinat_37967865#文件:loggingModel.py#日期:2018-11-12#备注:logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''import loggingfrom datetime import datetimeimport oslogger = logging.getLogger() # 初始化一个logger# 默认生成的root logger的level是logging.WARNING,低于该级别的就不输出了# 级别排序:CRITICAL>ERROR>WARNING>INFO>DEBUGlogger.setLevel(logging.DEBUG) # 总级别:所有信息都输出# 将日志存储到指定目录的文件file_name = datetime.now().strftime('%Y%m%d%H%M') # 用时间当成文件名称,格式:201811111833(年月日时分)log_path = os.path.dirname(os.path.abspath('.')) + '/logs/' # 指定存储的绝对路径log_name = log_path + file_name + '.log' # 生成文件信息save_file = logging.FileHandler(log_name)# 在控制台输出日志output = logging.StreamHandler()output.setLevel(logging.INFO) # 设置输出到控制台的级别# 日志输出格式设置formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s --> %(message)s')save_file.setFormatter(formatter)output.setFormatter(formatter) # 日志处理logger.addHandler(save_file)logger.addHandler(output)logger.debug("this is a logger debug message")logger.info("this is a logger info message")logger.warning("this is a logger warning message")logger.error("this is a logger error message")logger.critical("this is a logger critical message")
一、日志级别:
默认生成的root logger的level是logging.WARNING,低于该级别的就不输出了
级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG debug : 打印全部的日志,详细的信息,通常只出现在诊断问题上 info : 打印info,warning,error,critical级别的日志,确认一切按预期运行 warning : 打印warning,error,critical级别的日志,一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”),这个软件还能按预期工作 error : 打印error,critical级别的日志,更严重的问题,软件没能执行一些功能 critical : 打印critical级别,一个严重的错误,这表明程序本身可能无法继续运行二、常用函数:
logging.getLogger() 初始化一个logger
Logger.setLevel() 设置总日志级别 logger.addHandler() 日志处理 logging.FileHandler() 日志存储到文件 logging.StreamHandler() 日志输出到控制台 logging.Formatter() 日志格式 setFormatter() 设置日志格式 setLevel() 设置具体日志级别三、format常用格式说明
%(asctime)s: 打印日志的时间
%(name)s: 打印模块名称 %(levelname)s: 打印日志级别名称 %(message)s: 打印日志信息%(levelno)s: 打印日志级别的数值
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0] %(filename)s: 打印当前执行程序名 %(funcName)s: 打印日志的当前函数 %(lineno)d: 打印日志的当前行号 %(thread)d: 打印线程ID %(threadName)s: 打印线程名称 %(process)d: 打印进程ID