python的logging模块
2018-06-18 00:11:49来源:未知 阅读 ()
一 logging模块定义了5种日志等级,依次从低到高:
- DEBUG:用于调试目的的底层系统信息
- INFO:普通系统信息
- WARNING:表示出现一个较小问题
- ERROR:表示出现一个错误问题
- CRITICAL:表示出现一个致命问题
默认等级是WARNING,即低于WARNING等级的日志不会显示。
In [1]: import logging In [2]: logging.info("aaaa") In [3]: logging.warning("bbbb") WARNING:root:bbbb
二 将日志记录到文件中
import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(pathname)s %(filename)s [line:%(lineno)s] %(levelname)s %(message)s', filename='/tmp/test.log', filemode='w') logging.debug("debug message") logging.info("info message") logging.warning("warning message") logging.error("error message") logging.critical("critical message")
文件test.log的内容:
2017-12-31 14:30:01,793 example_logging.py example_logging.py [line:8] DEBUG debug message 2017-12-31 14:30:01,794 example_logging.py example_logging.py [line:9] INFO info message 2017-12-31 14:30:01,794 example_logging.py example_logging.py [line:10] WARNING warning message 2017-12-31 14:30:01,794 example_logging.py example_logging.py [line:11] ERROR error message 2017-12-31 14:30:01,794 example_logging.py example_logging.py [line:12] CRITICAL critical message
level:设置日志等级
format:日志输出格式:
- %(levelno)s: 打印日志级别的数值
- %(levelname)s: 打印日志级别名称
- %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
- %(filename)s: 打印当前执行程序名
- %(module)s:filename名称部分,不包含后缀
- %(funcName)s: 打印日志的当前函数
- %(lineno)d: 打印日志的当前行号
- %(asctime)s: 打印日志的时间
- %(thread)d: 打印线程ID
- %(threadName)s: 打印线程名称
- %(process)d: 打印进程ID
- %(message)s: 打印日志信息
filename:保存的文件名称
filemode:文件打开模式
三 日志的高级用法
- python日志系统是由4部分组成:
- logger:Logger 为日志系统的入口。每个logger命名都是bucket,你可以向这个bucket写入需要处理的消息,当一条消息传递给logger 时,消息的日志级别将与logger 的日志级别进行比较。如果消息的日志级别大于等于logger 的日志级别,该消息将会往下继续处理。如果小于,该消息将被忽略。
- Handler:Handler 决定如何处理logger 中的每条消息。它表示一个详细的日志行为,例如将消息写到屏幕上、写到文件中或者写到网络socket。与logger 一样,handler 也有一个日志级别。如果消息的日志级别小于handler 的级别,handler 将忽略该消息。
- Filter:Filter 用于对从logger 传递给handler 的日志记录进行额外的控制。
- Formatter:格式控制
- 简单例子(将日志结果输出到控制台)
import logging # 创建 一个logger,级别为DEBUG logger = logging.getLogger('simple_example') logger.setLevel(logging.DEBUG) # 创建 一个 handler,用于处理控制台输出,处理级别为DEBUG ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # 设置输出格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 给ch添加输出格式 ch.setFormatter(formatter) # 将ch添加到logger上 logger.addHandler(ch) logger.debug('debug message') logger.info('info message') logger.warn('warn message') logger.error('error message') logger.critical('critical message')
运行结果
$ python simple_logging_config.py 2005-03-19 15:38:55,977 - simpleExample - DEBUG - debug message 2005-03-19 15:38:55,979 - simpleExample - INFO - info message 2005-03-19 15:38:56,054 - simpleExample - WARNING - warn message 2005-03-19 15:38:56,055 - simpleExample - ERROR - error message 2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message
四 其他
1. logging是线程安全的吗?
是线程安全的,但不是进程安全的
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash