线上网站建设需求,女生做网站运营好吗,模板网点地址信息错误获取发货地址失败,myeclipse怎样做网站一、入门介绍
1.1 logging和logger的区别
logging和logger是Python的logging模块中的两个关键概念#xff0c;它们在功能和用途上有明显的区别。 logging是一个Python标准库#xff0c;是一个用于记录日志的标准模块。它提供了一个灵活的框架#xff0c;可以用来记录不同级…一、入门介绍
1.1 logging和logger的区别
logging和logger是Python的logging模块中的两个关键概念它们在功能和用途上有明显的区别。 logging是一个Python标准库是一个用于记录日志的标准模块。它提供了一个灵活的框架可以用来记录不同级别的日志信息包括从调试信息到严重错误的信息。logging模块可以配置日志的输出格式、日志级别以及日志的输出位置如文件、终端、甚至是邮件。 而logger则是logging模块中的一个重要概念可以理解为是logging模块的一部分。Logger是记录器是一个具体的日志记录工具。每个Logger都有自己的日志级别并且可以拥有多个处理器handler每个处理器负责处理日志记录的不同部分例如将日志记录输出到文件或发送到邮件。 总结来说logging是一个模块提供了记录日志的框架和功能而logger是logging模块中的一部分是具体的日志记录工具。
1.2 logging.basicConfig设置日志级别与logger.setLevel作用一样吗
logging.basicConfig设置的日志级别和logger.setLevel(logging.DEBUG)作用不完全一样。 logging.basicConfig是Python标准库logging模块中的一个函数用于对logging进行基础的配置如设置日志级别、输出格式等。其中日志级别是可以设置的默认级别为WARNING。但logger.setLevel方法用于设置logger的日志级别这个设置会影响到该logger以及它所创建的handler的日志级别默认级别为DEBUG。 因此虽然logging.basicConfig设置的日志级别和logger.setLevel(logging.DEBUG)都可以用来设置日志级别但它们的作用范围和影响不同。logging.basicConfig主要影响全局的日志行为而logger.setLevel主要影响单个logger的行为。 在实际项目使用中使用logging.basicConfig或使用logger都可以实现对打点日志的规范二选一即可。
1.3 logging模块提供的Handler类型
StreamHandler将日志消息输出到流对象如文件、终端等FileHandler将日志消息写入文件。RotatingFileHandler将日志消息写入文件当文件达到一定大小后会自动滚动TimedRotatingFileHandler将日志消息写入文件并在指定的时间间隔后滚动SocketHandler将日志消息发送到网络套接字DatagramHandler将日志消息发送到UDP套接字SMTPHandler将日志消息通过电子邮件发送给指定的接收者SysLogHandler将日志消息发送到系统日志NTEventHandler将日志消息发送到Windows事件日志HTTPHandler将日志消息发送到HTTP服务器
二、实际应用代码
2.1 不做任何配置的情况
import logginglogging.warning(Hello World!) # 在什么都不配置和设定的情况下logging会简单地将日志打印在显示器上
logging.info(I miss you so much) # 这行不会被打印因为级别低于默认级别默认级别是WARNING2.2 配置basicConfig将日志输出至文件中
import logging# 创建logger记录器
logging.basicConfig(filenameexample.log, levellogging.DEBUG)
logging.warning(Hello World!)
logging.info(I miss you so much) 2.3 通过logger实现日志打点功能
import logging
from logging.handlers import TimedRotatingFileHandlerdef init(level):日志文件的初始化方法logger logging.getLogger(my_logger)formatterStr [%(asctime)s] [%(threadName)s] [line:%(lineno)d] %(levelname)s: %(message)slog_formatter logging.Formatter(formatterStr)# 控制台日志console_handler logging.StreamHandler()console_handler.setFormatter(log_formatter)# 用于处理日志文件的滚动cur_day time.strftime(%Y%m%d%H, time.localtime(time.time()))log_file logs/ cur_day .loginfo_handler TimedRotatingFileHandler(filenamelog_file,whenH,interval1,backupCount10,encodingutf-8)# 设置文件里写入的格式info_handler.setFormatter(log_formatter)if level debug:logger.setLevel(logging.DEBUG)console_handler.setLevel(logging.DEBUG)info_handler.setLevel(logging.DEBUG)else:logger.setLevel(logging.INFO)console_handler.setLevel(logging.INFO)info_handler.setLevel(logging.INFO)# 添加日志处理器logger.addHandler(console_handler)logger.addHandler(info_handler)return loggerlogger init(info)logger.info(aaaaaaaaaaaaaaaa)