logging日志框架
主要包括四部分:
- Loggers: 可供程序直接调用的接口,app通过调用提供的api来记录日志
- Handlers: 决定将日志记录分配至正确的目的地
- Filters:对日志信息进行过滤, 提供更细粒度的日志是否输出的判断
- Formatters: 制定最终记录打印的格式布局
日志级别
- DEBUG:详细信息,一般只在调试问题时使用
- INFO:证明事情按预期工作
- WARNING:某些没有预料到的时间提示,或者在将来可能会出现的问题提示。例如:磁盘空间不足,但是软件还是会照常运作
- ERROR:由于更严重的问题,软件已不能执行一些功能了
- CRITICAL:严重错误,表明软件已不能继续运行了
级别排序:CRITICAL>ERROR>WARNING>INFO>DEBUG 默认等级是WARNING
常用函数
basicConfig
# basicConfig直接配置生成hanler
logging.basicConfig(filename="./logs/flask.log",
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger('mainModule')
控制台记录
loggerinput = logging.getLogger('input')
loggerinput.setLevel(level = logging.INFO)
#可定义记录到stdout or stdin
console = logging.StreamHandler(sys.stdout)
console.setLevel(logging.INFO)
loggerinput.addHandler(console)
文件记录Handler
loggerinput = logging.getLogger('input')
loggerinput.setLevel(level = logging.INFO)
# 一般handler
# handler = logging.FileHandler("./logs/intput.log")
# 自动扩充handler
# handler = RotatingFileHandler("./logs/intput.log")
# 自动扩充且按天记录handler
handler = TimedRotatingFileHandler("./logs/intput.log", when='D', backupCount=7)
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
#logger添加handler
loggerinput.addHandler(handler)
参考文献
- https://www.cnblogs.com/deeper/p/7404190.html
- https://www.cnblogs.com/lixiaoting/p/11131289.html
- https://cloud.tencent.com/developer/article/1114858
- https://blog.csdn.net/weixin_35834894/article/details/96454291