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实现获取序列中最小的几个元素
Sep 25 Python
Python多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
Python+微信接口实现运维报警
Aug 27 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
django自带serializers序列化返回指定字段的方法
Aug 21 Python
python线程信号量semaphore使用解析
Nov 30 Python
python函数中将变量名转换成字符串实例
May 11 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 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
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
YII实现分页的方法
2014/07/09 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
Move.js入门
2017/02/08 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
python的id()函数介绍
2013/02/10 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
python处理csv中的空值方法
2018/06/22 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
详解flask表单提交的两种方式
2018/07/21 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
食品质检员岗位职责
2015/04/08 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书