快速开始
日志级别 | 权值 |
---|---|
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 评论:
发表评论