logging 基础知识:
logging的基础知识:
"""
logging.basicConfig()参数介绍
filename:创建一个 FileHandler,使用指定的文件名,而不是使用 StreamHandler。
filemode:如果指明了文件名,指明打开文件的模式(如果没有指明 filemode,默认为 ‘a’)。
format;handler 使用指明的格式化字符串。
datefmt:handler 使用指明的格式化字符串。
level:指明根 logger 的级别。
stream:使用指明的流来初始化 StreamHandler。该参数与 ‘filename’ 不兼容,如果两个都有,‘stream’ 被忽略。
关于日志模块
#关于模块的使用
#日志的等级划分
debug :调式信息,进行程序诊断时候使用
info:普通信息,确认程序按照预期进行
warning:警告信息
error:错误信息
critical:危险错误,严重的错误信息
formater格式
%(asctime)s 日志发生的时间
%(levelname)s 日志的等级
%(message)s 日志文本内容
%(name)s 日志器名称
%(pathname)s 调用日志记录函数文件全路径
%(filename)s 调用日志记录函数的文件
%(funcName)s 调用日志记录函数名称
%(lineno)d 日志函数的代码所在的行号
%(process)d:打印进程 ID
%(threadName)s:打印线程名称
"""
案例1:关于format 和logging的学习
#logging formater 格式学习 以及logging等级
import logging
# # 设置输出的格式
LOG_FORMAT = "时间:%(asctime)s - 日志等级:%(levelname)s - 日志信息:%(message)s"
# 对logger进行配置——日志等级和输出格式 大于该等级的日志才会输出
logging.basicConfig(level=logging.WARNING, format=LOG_FORMAT)
#logging.level(message)创建一条level级别的日志
logging.debug("This is a debug log")
logging.info("This is a info log")
logging.warning("This is a warning log")
logging.error("This is a error log")
logging.critical("This is a critical log")
案例2:日志保存到文件
import logging
# # 设置输出的格式
LOG_FORMAT = "时间:%(asctime)s - 日志等级:%(levelname)s - 日志信息:%(message)s"
# 对logger进行配置——日志等级和输出格式 大于该等级的日志才会输出
logging.basicConfig(level=logging.WARNING, format=LOG_FORMAT,filename='save.log')
#logging.level(message)创建一条level级别的日志
logging.debug("This is a debug log")
logging.info("This is a info log")
logging.warning("This is a warning log")
logging.error("This is a error log")
logging.critical("This is a critical log")
#案例3 多模块的日志信息打印
创建一个logging.py 文件
import logging
import my_log
def main():
logging.basicConfig(filename="666myfile.log", level=logging.DEBUG)
logging.info("start")
my_log.func()
logging.info("end")
if __name__ == "__main__":
main()
创建一个my_log.py文件
import logging
def func():
for item in range(5):
logging.info("printf message of log")
执行logging,py文件,在666myfile.log里面会出现如下结果
INFO:root:start
INFO:root:printf message of log
INFO:root:printf message of log
INFO:root:printf message of log
INFO:root:printf message of log
INFO:root:printf message of log
INFO:root:end
#logging 的四大组件
logger:日志器(记录器),提供日志接口,供应用代码使用。
handler:处理器,将日志记录发送到合适的目的地。
filter:过滤器,提供一种优雅的方式决定一个日志记录是否发送到handler。
formatter:格式化器,指定日志输出的格式。
案例3 打印堆栈信息
import requests
import logging
logging.basicConfig(
filename='666cmdb.log',
format='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
level=logging.ERROR
)
try:
requests.get("www.google.com")
except Exception as e:
msg = str(e)#内部调用__str__方法
logging.error(msg,exc_info=True)