Python logging模块用法示例


Posted in Python onAugust 28, 2018

本文实例讲述了Python logging模块用法。分享给大家供大家参考,具体如下:

logging模块

函数式简单配置

import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:

  • filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
  • filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
  • format:指定handler使用的日志显示格式。
  • datefmt:指定日期时间格式。
  • level:设置rootlogger(后边会讲解具体概念)的日志级别
  • stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open('test.log','w')),默认为sys.stderr。若同时列出了filenamestream两个参数,则stream参数会被忽略。

format参数中可能用到的格式化串:

%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s 用户输出的消息

logging库提供了多个组件:LoggerHandlerFilterFormatter。Logger对象提供应用程序可直接使用的接口,Handler发送日志到适当的目的地,Filter提供了过滤日志信息的方法,Formatter指定日志显示格式。另外,可以通过:logger.setLevel(logging.Debug)设置级别,当然,也可以通过fh.setLevel(logging.Debug)单对文件流设置某个级别。

def my_logger(filename,leval,file = True,stream = True):
  logger = logging.getLogger()
  formatter = logging.Formatter (fmt = '%(asctime)s--%(message)s----%(name)s--%(levelname)s--%(lineno)d',
                  datefmt = '%d/%m/%y %H:%M:%S')
  logger.setLevel(leval)
  if file:
    file_handler = logging.FileHandler(filename, encoding='utf-8')
    logger.addHandler(file_handler)
    file_handler.setFormatter(formatter)
  if stream:
    stream_handler = logging.StreamHandler()
    stream_handler.setFormatter(formatter)
    logger.addHandler(stream_handler)
  return logger
logger = my_logger('logging',logging.DEBUG)
logger.warning('warn!!!')

运行结果:

28/08/18 09:48:53--warn!!!----root--WARNING--27

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python函数中的函数(闭包)用法实例
Mar 15 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
浅谈flask截获所有访问及before/after_request修饰器
Jan 18 Python
python向已存在的excel中新增表,不覆盖原数据的实例
May 02 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
一篇文章了解Python中常见的序列化操作
Jun 20 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
django删除表重建的实现方法
Aug 28 Python
python的scipy实现插值的示例代码
Nov 12 Python
Python安装whl文件过程图解
Feb 18 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
Python设计密码强度校验程序
Jul 30 Python
Python异常处理操作实例详解
Aug 28 #Python
Python封装原理与实现方法详解
Aug 28 #Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 #Python
python中cPickle类使用方法详解
Aug 27 #Python
python散点图实例之随机漫步
Aug 27 #Python
python3.5绘制随机漫步图
Aug 27 #Python
Python反射和内置方法重写操作详解
Aug 27 #Python
You might like
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
php 方便水印和缩略图的图形类
2009/05/21 PHP
PHP 反向排序和随机排序代码
2010/06/30 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
Yii2如何批量添加数据
2016/05/17 PHP
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
JavaScript中的this机制
2016/01/30 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
光声世纪笔试题目
2012/08/25 面试题
大学社团活动总结
2014/04/26 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript