Python中logging日志的基本使用
1.logging介绍
logger是提供我们记录日志的方法;
handler是让我们选择日志的输出地方,如:控制台,文件,邮件发送等,一个logger添加多个handler;
filter是给用户提供更加细粒度的控制日志的输出内容;
formater用户格式化输出日志的信息。
2.level级别控制
只有大于指定级别的日志才会输出
DEBUG[10]:详细的信息,通常只出现在诊断问题上
INFO[20]:确认一切按预期运行
WARNING[30]:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。
ERROR[40]:更严重的问题,软件没能执行一些功能
CRITICAL[50]:一个严重的错误,这表明程序本身可能无法继续运行
3.默认级别为warning
logging.debug('debug 信息')
logging.warning('只有这个会输出。。。')
logging.info('info 信息')
4.basicConfig 设置保存到文件
默认保存在当前目录下,可以指定目录 "d:\new.log"
logging.basicConfig(level=logging.DEBUG, # 控制台打印的日志级别
filename='new.log',
filemode='a', ##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
# a是追加模式,默认如果不写的话,就是追加模式
format=
'%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
# 日志格式
)
format 格式化日志。有以下几种
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
同时将日志输出到console和文件中
import logging
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
console = logging.StreamHandler()
console.setLevel(logging.INFO)
logger.addHandler(handler)
logger.addHandler(console)
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")
logging.getLogger
logging模块中最基础的对象,用logging.getLogger(name)方法进行初始化,name可以不填。通常logger的名字我们对应模块名
logging.getLogger('jobs')
还不快抢沙发