【Python】logging内置模块基本使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_37967865/article/details/84000406

logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。
print也可以输入日志,logging相对print来说更好控制输出在哪个地方,怎么输出及控制消息级别来过滤掉那些不需要的信息。
一条日志信息对应的是一个事件的发生,而一个事件通常需要包括以下几个内容:
事件发生时间
事件发生位置
事件的严重程度--日志级别
事件内容
上面这些都是一条日志记录中可能包含的字段信息,当然还可以包括一些其他信息,如进程ID、进程名称、线程ID、线程名称等。
日志格式就是用来定义一条日志记录中包含那些字段的,且日志格式通常都是可以自定义的。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:loggingModel.py
#日期:2018-11-12
#备注:logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。  
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


import logging
from datetime import datetime
import os


logger = logging.getLogger()    # 初始化一个logger

# 默认生成的root logger的level是logging.WARNING,低于该级别的就不输出了
# 级别排序:CRITICAL>ERROR>WARNING>INFO>DEBUG
logger.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

猜你喜欢

转载自blog.csdn.net/sinat_37967865/article/details/84000406