logging日志——Basic Logging Tutorial

时间:2024-08-31 15:03:50

在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.****.net/zyz511919766/article/details/25136485/