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中的闭包实例详解
Aug 29 Python
Python实现检测服务器是否可以ping通的2种方法
Jan 01 Python
Python随机读取文件实现实例
May 25 Python
python win32 简单操作方法
May 25 Python
python对配置文件.ini进行增删改查操作的方法示例
Jul 28 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 Python
pytorch使用horovod多gpu训练的实现
Sep 09 Python
Django admin组件的使用
Oct 24 Python
Python内置的数据类型及使用方法
Apr 13 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
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
基于python中__add__函数的用法
2019/11/25 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
python excel多行合并的方法
2020/12/09 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
国家助学金获奖感言
2014/01/31 职场文书
本科应届生求职信
2014/08/05 职场文书
《给予树》教学反思
2016/03/03 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
HTML中的表单元素介绍
2022/02/28 HTML / CSS