python----打印日志信息(logging模块)
日志级别
- DEBUG:程序调试bug时使用
- INFO:程序正常运行时使用
- WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误
- ERROR:程序出错误时使用,如:IO操作失败
- CRITICAL:特别严重的问题,导致程序不能再继续运行时使用,如:磁盘空间为空,一般很少使 用
默认的是WARNING等级,当在WARNING或WARNING之上等级的才记录日志信息。
日志等级从低到高的顺序是: DEBUG < INFO < WARNING < ERROR < CRITICAL
1 import logging 2 3 logging.debug("This is a debug level log") 4 logging.info("This is a info level log") 5 logging.warning("This is a warning level log") 6 logging.error("This is a error level log") 7 logging.critical("This is a critical level log")
运行结果
注:日志信息只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING
logging日志等级和输出格式的设置,且日志信息保存到日志文件
1 import logging 2 3 logging.basicConfig( 4 filename="log.txt", 5 format='%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s', 6 level=10, 7 filemode="w", 8 datefmt='%m/%d/%Y %I:%M:%S' 9 ) 10 logging.debug("This is a debug level log") 11 logging.info("This is a info level log") 12 logging.warning("This is a warning level log") 13 logging.error("This is a error level log") 14 logging.critical("This is a critical level log")
运行结果
logging.basicConfig函数各参数:
- filename:表示文件名
- filemode:和file函数意义相同,指定日志文件的打开模式,'w'或'a'。参数为‘w’表示每次的日志信息都覆盖掉之前的
- format:表示日志的输出格式和内容, 参数说明:
- %(asctime)s: 打印日志的时间
- %(levelno)s: 打印日志级别的数值
- %(pathname)s: 打印当前执行程序的路径
- %(filename)s: 打印当前执行程序名
- %(funcName)s: 打印日志的当前函数
- %(lineno)d: 打印日志的当前行号
- %(thread)d: 打印线程ID
- %(threadName)s: 打印线程名称
- %(levelname)s: 打印日志级别名称
- %(message)s: 打印日志信息
- %(process)d: 打印进程ID
- datefmt:表示自定义时间格式
- level:表示设置的日志等级
- FATAL = CRITICAL = 50
-
ERROR = 40
-
WARN = WARNING = 30
-
INFO = 20
-
DEBUG = 10
- NOTSET = 0
- stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
日志写入的函数:
1 import logging 2 3 def log(log_content): 4 # 定义文件 5 logFile = logging.FileHandler('logInfo.txt', 'a') 6 # log格式 7 fmt = logging.Formatter(fmt = '%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s') 8 logFile.setFormatter(fmt) 9 10 # 定义日志 11 logger = logging.Logger('logTest', level=logging.DEBUG) 12 logger.addHandler(logFile) 13 logger.info(log_content)