Pyhton中logging的使用方法
来源:互联网 发布:苹果电脑允许安装软件 编辑:程序博客网 时间:2024/06/07 23:27
在讲解之前,先复习一些在Python中小知识,还是以代码的形式说明:
>>> import time >>> time.time() # time.time() 用于获取时间戳,1970年以前的无法获取。1512545439.814>>> time.localtime(time.time()) # time.localtime(time.time()) 从返回浮点数的时间戳方式向时间元组转换time.struct_time(tm_year=2017, tm_mon=12, tm_mday=6, tm_hour=15, tm_min=30, tm_sec=59, tm_wday=2, tm_yday=340, tm_isdst=0)>>> time.localtime() # time.localtime()本身返回的是当前时间元组time.struct_time(tm_year=2017, tm_mon=12, tm_mday=6, tm_hour=15, tm_min=43, tm_sec=56, tm_wday=2, tm_yday=340, tm_isdst=0)>>> time.strftime("%Y%m%d-%H%M%S", time.localtime(time.time())) # 将时间元组格式化输出'20171206-153130'>>> time.strftime("%Y%m%d-%H%M%S", time.localtime())'20171206-153426'#其中python中时间日期格式化符号:# %y 两位数的年份表示(00-99)# %Y 四位数的年份表示(000-9999)# %m 月份(01-12)# %d 月内中的一天(0-31)# %H 24小时制小时数(0-23)# %M 分钟数(00=59)# %S 秒(00-59)>>> time.asctime(time.localtime()) # 返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串'Wed Dec 06 15:53:22 2017'>>> time.asctime() # 参数为空,或者一个表示时间的元组,例如time.localtime()返回的值就是一个时间元组'Wed Dec 06 15:53:42 2017'
下面来介绍一下logging的基本用法
在代码中创建logging的基本步骤:
1、导入日志模块 import logging
2、 创建一个logger logger=logging.getLogger(“myFristlogger”)
3、设置logger的等级 logger.setLevel(logging.DEBUG)
4、创建一个handler用于写入日志文件 fh=logging.FileHander(“E/code/first.log”)
5、定义handler的输出格式 formatter=logging.Formatter(‘%(asctime)s-%(name)s-%(module)s-%(funcName)s-%(message)s’)
6、给logger添加handler logger.addHandler(fh)
7、在其他模块想要输出信息到日志信息时,在模块中import logging ,然后logger.info(“这是日志输出的info级别的信息”),其他的还有如:
import logginglogger.debug("foobar") logger.info("foobar") logger.warning("foobar") logger.error("foobar") logger.critical("foobar")
下面给出一个网上的具体的例子,感受一下:
import logging# 创建一个loggerlogger = logging.getLogger('mylogger')logger.setLevel(logging.INFO) # 创建一个handler,用于写入日志文件fh = logging.FileHandler('test.log')fh.setLevel(logging.INFO) # 再创建一个handler,用于输出到控制台ch = logging.StreamHandler()ch.setLevel(logging.INFO)# 定义handler的输出格式formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')fh.setFormatter(formatter)ch.setFormatter(formatter)# 给logger添加handlerlogger.addHandler(fh)logger.addHandler(ch)# 记录一条日志logger.info('foorbar')logger.debug("foobar") # 不输出 logger.info("foobar") # 输出 logger.warning("foobar") # 输出 logger.error("foobar") # 输出 logger.critical("foobar") # 输出
注意事项:
logging.getLogger([name])
返回一个logger实例,如果没有指定name,返回root logger。只要name相同,返回的logger实例都是同一个而且只有一个,即name和logger实例是一一对应的。这意味着,无需把logger实例在各个模块中传递。只要知道name,就能得到同一个logger实例。
Logger.setLevel(level)
设置logger的level, level有以下几个级别:
级别高低顺序:NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
Logger.addHandler(hdlr)
通过handler对象可以把日志内容写到不同的地方。比如简单的StreamHandler就是把日志写到类似文件的地方。python提供了十几种实用handler,比较常用有
# StreamHandler: 输出到控制台 # FileHandler: 输出到文件 # BaseRotatingHandler 可以按时间写入到不同的日志中。比如将日志按天写入不同的日期结尾的文件文件。
logging.basicConfig([**kwargs])
这个函数用来配置root logger, 为root logger创建一个StreamHandler,设置默认的格式。*这些函数: logging.debug()、logging.info()、logging.warning()、logging.error()、logging.critical() 如果调用的时候发现root logger没有任何handler,会自动调用basicConfig添加一个handler 如果root logger已有handler,这个函数不做任何事情使用basicConfig来配置root logger的输出格式和level:
import logging from logging.handlers import TimedRotatingFileHandler logging.basicConfig(format="[ %(asctime)s][%(module)s.%(funcName)s] %(message)s") logging.debug("I have no hanndler,but basicConfig will config a handler for me ,and the seted output format and logging level ")
logging.Formatter()函数的取值可以有但不限于一下几种
又到了总结的时候啦!!好开心,写完这个去吃饭饭!
logger对象直接提供日志接口。handler 把日志写到不同的地方,formatter描述日志的格式。从最简单的formatter对象来看。formatter指定的是每一条日志记录的抬头信息,也就是你可以指定日志记录的时间格式、进程号、文件名、函数名等信息。
其他信息可以参考这篇博客:http://www.jb51.net/article/42626.htm
- Pyhton中logging的使用方法
- 关于Pyhton logging
- commons logging 的 使用方法
- Commons Logging 的使用方法
- Commons Logging 的使用方法
- jakarta commons logging 的使用方法
- jakarta commons logging 的使用方法
- pyhton i18n 中文化的问题
- pyhton flask中调试模式的使用
- 日志工具 Commons Logging 的使用方法
- python 的日志logging模块使用方法
- python标准日志模块logging的使用方法
- Pyhton:解决在IDLE中Pyhton新建列表失败的问题
- pyhton中引用计数
- python中logging的学习
- pyhton中列表和字典最本质的区别
- 调试win7+pyhton+keras+mnist过程中遇到的问题
- pyhton中的logging 输入到日志以及输出到文件
- 在Excel中巧制表格:制作双斜线表头
- jsonp跨域请求
- TCP网络编程之echo回射程序
- 建立Linux开发环境
- [bzoj3944]Sum
- Pyhton中logging的使用方法
- mysql 主从日志文件mysql-bin文件清除方法
- RxJava2.0的创建
- 文件字节输入流--FileInputStream
- web项目中各种路径的获取
- java关键字
- linux 判断某个命令是否安装
- 外卖订单量预测异常报警模型实践
- 重写picker 遮罩层 动态效果遮罩层