logging模块
import logging logging.basicConfig(level=logging.DEBUG, format="%(message)s %(asctime)s",datefmt="%Y-%m-%d %H:%M:%S") #level:日志报错级别 format:日志输出字符形式 ( asctime:日期 message:要输出的内容)datefmt:日期格式 logging.debug("hello world")#级别大于等于debug时输出"hello world" logging.error("hello world1")
logging高级应用
logging采用模块化设计,主要包含四种组件:
- loggers:记录器,提供应用程序代码直接使用的接口
- Handlers:处理器,将记录器生产的日志发送至目的地
- Filters:过滤器,提供更好的粒度控制,决定哪些日志会被输出
- Formatters:格式化器,设置日志内容的组成结构和消息字段
记录器:
1.提供应用程序接口的调用接口
logger = logging.getLogger(__name__) #logger是单例的
2.决定日志记录的级别
logger.serLevel()
3.将日志内容传递到相关联的handlers中:
logger.addHandler()和logger.removeHandler()
Handlers处理器
它们将日志发到不同的目的地。可以是文件、标准输出、邮件、或者通过socke、http等协议发送到任何地方。
常见处理器:StreamHandler、FileHandler、BaseRotaingHandler、RotaoingHandler
StreamHandler
标准输出stdout(如显示器)分发器
创建方法:sh = logging.StreamHandler(stream=None)
FileHandler
将日志保存到磁盘文件的处理器
创建方法:fh = logging.FileHandler(filename, mode='a' , encoding=None, delay=False)
setFormatter():设置当前handler对象使用的消息格式
import logging # 记录器 logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # handler处理器 consoleHandler = logging.StreamHandler() fileHandler = logging.FileHandler(filename="check.log") # formatter格式 formatter = logging.Formatter("%(levelname)s:%(message)s %(asctime)s", datefmt="%Y-%m-%d %H:%M:%S") # 给处理器设置格式 consoleHandler.setFormatter(formatter) fileHandler.setFormatter(formatter) # 记录器设置处理器 logger.addHandler(consoleHandler) logger.addHandler(fileHandler)