logging日志——Basic Logging Tutorial
在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:
filename,filemode,datefmt,format,level,stream(未介绍)
import logging logging.basicConfig(filename='日志.log', filemode='w',datefmt='%m/%d/%Y %I:%M:%S %p', format='%(levelname)s:%(message)s--%(asctime)s', level=logging.INFO)
logging模块 logging教程
logging用于记录(track)软件运行过程中发生的事件,事件具有开发者可赋予它的重要程度(等级importance/level/severity)
logging函数(也即等级)包含:debug、 info、warning、error、critical (level升序,对应的level即大写)。默认等级为WARNING,即只有日志级别高于等于WARNING的events才会被tracked。想要控制logging的等级,则需通过 logging.basicConfig(level=logging.DEBUG) 配置。能对被tracked的events进行一些操作处理,如打印到控制台或写到磁盘(日志)。
import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message')
输出:默认情况下只有日志级别高于等于WARNING的events才会打印出来
WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message
logging to file
将logging events记录输出到文件,在basicConfig中指定文件路径filename即可:(重复,则logging会追加到log文件)
logging.basicConfig(filename='日志.log',level=logging.DEBUG)
若想要不把新的logging追加记录到原来的log文件,可通过filemode指定文件方式,filemode = 'w',则是更新log文件:(之前的log会丢失)
logging.basicConfig(filename='日志.log',filemode='w',level=logging.DEBUG)
多模块logging
在多模块时管理log,可以用以下方式简单的实现:
import logging import mymodule #自己写的模块 logging.basicConfig(filename='日志.log',level=logging.INFO) logging.info('start') mymodule.xxxx # 模块中需要记录log的代码 logging.info('end')
Logging 变量数据
使用格式化字符串(%占位),并将需要的变量作为logging函数的参数来实现将变量数据输出到 log。 其他做法: str.format()
and string.Template
import logging logging.basicConfig(filename='日志.log', filemode='w', level=logging.INFO) logging.info('start') logging.warning('%s before you %s', 'Look', 'leap!') logging.info('end')
输出: INFO:root:start WARNING:root:Look before you leap! INFO:root:end
Logging格式
通过format指定格式即可: (message:即events的描述,包括变量)
import logging logging.basicConfig(filename='日志.log', filemode='w',format='%(levelname)s:%(message)s', level=logging.INFO) logging.info('start') logging.warning('%s before you %s', 'Look', 'leap!') logging.info('end')
输出: INFO:start WARNING:Look before you leap! INFO:end (root不见啦)
在message中显示时间(日期)
在格式化字符串中加入‘%(asctime)s’ 即可,可用datefmt 规定时间的格式
import logging logging.basicConfig(filename='日志.log', filemode='w',datefmt='%m/%d/%Y %I:%M:%S %p', format='%(levelname)s:%(message)s--%(asctime)s', level=logging.INFO) logging.info('start') logging.warning('%s before you %s', 'Look', 'leap!') logging.info('end')
输出:INFO:start--11/06/2017 09:20:23 PM WARNING:Look before you leap!--11/06/2017 09:20:23 PM INFO:end--11/06/2017 09:20:23 PM
参考:
https://docs.python.org/3/howto/logging.html#logging-basic-tutorial
http://blog.csdn.net/zyz511919766/article/details/25136485/