日志级别
从低到高依次是:
- DEBUG:详细的信息,通常只出现在诊断问题上
- INFO:确认一切按预期运行
- WARNING:警告
- ERROR:错误
- CRITICAL:致命的错误
日志输出
通过logging.basicConfig函数对日志的输出格式及方式做相关配置,可以指定日志的输出格式format,用于输出很多有用的信息
- %(levelno)s:打印日志级别的数值
- %(levelname)s:打印日志级别名称
- %(pathname)s:打印当前执行程序的路径
- %(filename)s:打印当前执行程序名
- %(funcName)s:打印日志的当前函数
- %(lineno)d:打印日志的当前行号
- %(asctime)s:打印日志的时间
- %(thread)d:打印线程ID
- %(threadName)s:打印线程名称
- %(process)d:打印进程ID
- %(message)s:打印日志信息
在工作中常用格式为:format='%(asctime)s - %(process)d - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'
将日志输出到控制台
import logging
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(process)d - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
logging.debug('loggging debug message')
logging.info('loggging info message')
logging.warning('loggging warning message')
logging.error('loggging error message')
logging.critical('loggging critical message')
将日志输出到文件
只需要在logging.basicConfig函数中设置好输出文件的文件名和写文件的模式
import logging
logging.basicConfig(level=logging.INFO,
filename='log.txt',
filemode='w',
format='%(asctime)s - %(process)d - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
logging.debug('loggging debug message')
logging.info('loggging info message')
logging.warning('loggging warning message')
logging.error('loggging error message')
logging.critical('loggging critical message')
将日志输出到控制台和文件
import logging
logger = logging.getLogger() # 创建一个logger
logger.setLevel(logging.DEBUG) # 设置log等级总开关
log_file = 'log.txt'
fh = logging.FileHandler(log_file, mode='a')
fh.setLevel(logging.DEBUG) # 输出到file的log等级的开关
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING) # 输出到console的log等级的开关
format = logging.Formatter('%(asctime)s - %(process)d - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
fh.setFormatter(format)
ch.setFormatter(format)
logger.addHandler(fh)
logger.addHandler(ch)
logger.debug('loggging debug message')
logger.info('loggging info message')
logger.warning('loggging warning message')
logger.error('loggging error message')
logger.critical('loggging critical message')