日志:记录系统运行时的信息的(调试信息和异常信息)

基本用法:

import logging
logging.debug("这是一条调试信息")
logging.info("这是一条普通信息")
logging.warning("这是一条警告信息")
logging.error("这是一条错误信息")
logging.critical("这是一条严重错误信息")

4钟级别:DEBUG,INFO,WARNING,ERROR,CRITICAL

设置日志级别:

logging.basicConfig(level=logging.INFO)

设置日志格式:

logging.basicConfig(format="xxxxxxx")

format参数中可能用到的格式化信息:

占位符   描述

%(name)s Logger的名字

%(levelno)s 数字形式的日志级别

%(levelname)s 文本形式的日志级别

%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有

%(filename)s 调用日志输出函数的模块的文件名

%(module)s 调用日志输出函数的模块名

%(funcName)s 调用日志输出函数的函数名

%(lineno)d 调用日志输出函数的语句所在的代码行

%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示

%(relativeCreated)d 输出日志信息时的,自Logger创建以来的毫秒数

%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”

%(thread)d 线程ID。可能没有 %(threadName)s 线程名。可能没有

%(process)d 进程ID。可能没有 %(message)s 用户输出的消息 示例代码:

import logging
fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
logging.basicConfig(level=logging.INFO, format=fmt)
logging.debug("调试")
logging.info("信息")
logging.warning("警告")
logging.error("错误")

将日志信息输出到文件中:

import logging
fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
logging.basicConfig(filename="a.log", level=logging.INFO, format=fmt)
logging.debug("调试")
logging.info("信息")
logging.warning("警告")
logging.error("错误")

日志的高级用法

logging日志模块四大组件

组件之间的关系

日志器(logger)需要通过处理器(handler)将日志信息输出到目标位置,如:文件、sys.stdout、网络等;

不同的处理器(handler)可以将日志输出到不同的位置;

日志器(logger)可以设置多个处理器(handler)将同一条日志记录输出到不同的位置;

每个处理器(handler)都可以设置自己的格式器(formatter)实现同一条日志以不同的格式输出到不同的地 方。

每个处理器(handler)都可以设置自己的过滤器(filter)实现日志过滤,从而只保留感兴趣的日志;

简单点说就是:日志器(logger)是入口,真正干活儿的是处理器(handler),处理器(handler)还可以通过过 滤器(filter)和格式器(formatter)对要输出的日志内容做过滤和格式化等处理操作。

将日志信息同时输出到控制台和文件中

# 导包
# 创建日志处理器
# 创建控制台处理器 文件处理器
# 创建格式化器
# 把格式化器添加到处理器中
# 把处理器添加到日志器中
# 打印不同级别的日志
# 将日志信息同时输出到控制台和文件中
# 导包
import logging # 创建日志器对象
logger = logging.getLogger()
logger.setLevel(logging.DEBUG) # 创建控制台处理器
sh = logging.StreamHandler()
sh.setLevel(logging.INFO) # 创建文件处理器
fh = logging.FileHandler("b.log", encoding="UTF-8")
fh.setLevel(logging.ERROR) # 创建格式化器
fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
formatter = logging.Formatter(fmt=fmt) # 把格式化器添加到处理器中
sh.setFormatter(formatter)
fh.setFormatter(formatter) # 把处理器添加到日志器
logger.addHandler(sh)
logger.addHandler(fh) # 打印不同级别的日志
logger.info("info")
logging.warning("warn")
logger.error("error")

fh = logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0)

将日志信息记录到文件中,以特定的时间间隔切换日志文件。

filename: 日志文件名

when: 时间单位,可选参数

  S - Seconds

  M - Minutes

  H - Hours

  D - Days

  midnight - roll over at midnight W

  {0-6} - roll over on a certain day;

  0 - Monday

interval: 时间间隔

backupCount: 日志文件备份数量。

如果backupCount大于0,那么当生成新的日志文件时, 将只保留backupCount个文件,删除最老的文件。

最新文章

  1. php使用PDO连接mysql数据库
  2. Windows Server 2008 系统设置集合
  3. UIProgressView(进度条控件)
  4. BZOJ4449 : [Neerc2015]Distance on Triangulation
  5. FOJ 1683 纪念SlingShot(矩阵快速幂)
  6. Windows的命令行查看,修改,删除,添加环境变量
  7. 利用Python获取ZOJ所有题目的名字
  8. eclipse代码左虚线对齐设置
  9. delphi 集合的用法
  10. Quartz入门指南
  11. centos出现“FirewallD is not running”怎么办
  12. FastReport报表MVC显示步骤
  13. [Go] Go的WaitGroup计数信号量
  14. Thrift 基于zookeeper改造模式
  15. Ubuntu虚拟机屏幕自适应与文件拖拽复制方法
  16. spring的@Transaction使用注意
  17. mac通过命令行获取证书和配置文件过期时间
  18. 【BZOJ1488】[HNOI2009]图的同构(Burside引理,Polya定理)
  19. hdu 5053 (2014上海网赛L题 求立方和)
  20. Gradle语法基础解析

热门文章

  1. MyEclipse修改运行内存
  2. Linux网络编程综合运用之MiniFtp实现(三)
  3. HDU-1237- 简单计算器--栈的基本应用
  4. Android测试-monkey
  5. 分享私藏多年的Markdown编辑器
  6. Lua 学习之基础篇一<Lua 运算符>
  7. 多任务5-协程(IO密集型适用)--gevent完成多任务及monkey补丁
  8. 转: java 双向map
  9. Base 编解码(转)
  10. [51Nod 1238] 最小公倍数之和 (恶心杜教筛)