快速开始
| 日志级别 | 权值 |
|---|---|
| CRITICAL | 50 |
| ERROR | 40 |
| WARNING | 30 |
| INFO | 20 |
| DEBUG | 10 |
| NOTSET | 0 |
除NOTSET外,logging模块提供了与级别名称对应的小写函数以便快速调用。
样例代码:
import logging
def main():
logging.critical("critical")
logging.error("error")
logging.warning("warning")
logging.info("info")
logging.debug("debug")
if __name__ == '__main__':
main()
输出:
CRITICAL:root:critical
ERROR:root:error
WARNING:root:warning
从输出可以注意到WARNING以下级别的信息并没有打印出来。
原因在于logging默认的级别是WARNING,可以通过logging.basicConfig函数或修改默认Logger对象来改变级别。
默认输出格式为:
级别:Logger对象名:日志
basicConfig函数
basicConfig函数可以快速定制默认Logger对象。
参数名
filename
指定日志文件的名称。
filemode
指定日志文件的打开方式,有w和a两个选项,默认为a。
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: 打印日志信息
datefmt
指定时间格式,格式同time.strftime,影响format中asctime的格式。
level
设置日志级别,默认为logging.WARNING。
stream
指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略。
Logger对象
logging.getLogger函数返回一个Logger对象,函数接收一个字符串用以描述希望返回的Logger对象的名称,相同的名称全局唯一对应一个Logger对象。缺省参数为root,返回默认Logger对象。
Logger对象的方法
setLevel
设置该Logger对象的记录级别。
参数:
- level:级别枚举
log
打印指定级别的日志,须先设置handler。
参数:
- level:级别枚举。
- msg:希望打印的对象,会自动转为字符串。如果参数已是字符串,可以是格式字符串。
- *args:与msg结合成待打印内容
(msg % args)。
critical / error / warning / info / debug
指定对应级别的调用log。
参数:
- msg:希望打印的对象,会自动转为字符串。如果参数已是字符串,可以是格式字符串。
- *args:与msg结合成待打印内容(msg % args)。
addHandler
给Logger对象添加处理器,可添加多个。
参数:
- hdlr:处理器对象。
removeHandler
移除Logger对象的指定处理器。
参数:
- hdlr:处理器对象。
日志处理器
处理器用来扩展Logger对象,通过logger.addHandler(hdlr)方法加载到Logger对象。
模块集成处理器对象
- logging.StreamHandler:日志输出到流,可以是
sys.stderr、sys.stdout或者文件。 - logging.FileHandler:日志输出到文件。
- logging.handlers.SocketHandler:远程输出日志到TCP/IP sockets。
- logging.handlers.DatagramHandler: 远程输出日志到UDP sockets。
- logging.handlers.SMTPHandler: 远程输出日志到邮件地址。
- logging.handlers.SysLogHandler:日志输出到syslog。
- logging.handlers.NTEventLogHandler:远程输出日志到Windows NT/2000/XP的事件日志。
- logging.handlers.MemoryHandler:日志输出到内存中的制定buffer。
- logging.handlers.HTTPHandler:通过
GET或POST远程输出到HTTP服务器。 - logging.handlers.BaseRotatingHandler:日志回滚。
- logging.handlers.RotatingFileHandler:日志回滚,实际用。
- logging.handlers.TimedRotatingFileHandler:日志回滚,实际用。
处理器使用简示
logging.StreamHandler
logging.StreamHandler对象构造参数缺省为sys.stdout,参数可以接收一个流对象(sys.stderr、sys.stdout或者文件)。
sh1 = logging.StreamHandler()
sh2 = logging.StreamHandler(sys.stdout)
sh3 = logging.StreamHandler(open(file_path,"w")) # w 和 a 皆可
logging.StreamHandler 对象能够设置记录的日志级别,但实际输出受Logger对象的级别限制。Logger对象的级别制约着消息的派发,Handler对象的级别制约着记录。
sh2 = logging.setLevel(logging.WARING)
sh3 = logging.setLevel(logging.INFO)
logging.StreamHandler 对象能够自定义输出格式。
fmt = logging.Formatter("%(name)s:%(levelname)s:%(message)s")
sh1.setFormatter(fmt)
0 评论:
发表评论