博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python】logging内置模块基本使用
阅读量:4101 次
发布时间:2019-05-25

本文共 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

你可能感兴趣的文章
Jenkins 启动命令
查看>>
剑指offer算法题分析与整理(三)
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
fastcgi_param 详解
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
MODULE_DEVICE_TABLE的理解
查看>>
No devices detected. Fatal server error: no screens found
查看>>
db db2_monitorTool IBM Rational Performace Tester
查看>>
postgresql监控工具pgstatspack的安装及使用
查看>>
【JAVA数据结构】双向链表
查看>>
【JAVA数据结构】先进先出队列
查看>>
谈谈加密和混淆吧[转]
查看>>
乘法逆元
查看>>
Objective-C 基础入门(一)
查看>>