Logging模块构成

主要分为四个部分:

  • Loggers:提供应用程序直接使用的接口
  • Handlers:将Loggers产生的日志传到指定位置
  • Filters:对输出日志进行过滤
  • Formatters:控制输出格式
  1. import logging
  2. logging.basicConfig(level=logging.DEBUG,
  3. format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
  4. datefmt='%a, %d %b %Y %H:%M:%S',
  5. filename='myapp.log',
  6. filemode='w')
  7. logging.debug('This is debug message')
  8. logging.info('This is info message')
  9. logging.warning('This is warning message')

myapp.log文件中内容为:

  1. Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
  2. Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
  3. Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message

详细参数

  1. logging.basicConfig函数各参数:
  2. filename: 指定日志文件名
  3. filemode: file函数意义相同,指定日志文件的打开模式,'w''a'
  4. format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
  5. %(levelno)s: 打印日志级别的数值
  6. %(levelname)s: 打印日志级别名称
  7. %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
  8. %(filename)s: 打印当前执行程序名
  9. %(funcName)s: 打印日志的当前函数
  10. %(lineno)d: 打印日志的当前行号
  11. %(asctime)s: 打印日志的时间
  12. %(thread)d: 打印线程ID
  13. %(threadName)s: 打印线程名称
  14. %(process)d: 打印进程ID
  15. %(message)s: 打印日志信息
  16. datefmt: 指定时间格式,同time.strftime()
  17. level: 设置日志级别,默认为logging.WARNING
  18. stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当streamfilename同时指定时,stream被忽略

把日志打印到文件上和屏幕上

  1. import logging
  2. logger = logging.getLogger("simple_example")
  3. logger.setLevel(logging.DEBUG)
  4. # 建立一个filehandler来把日志记录在文件里,级别为debug以上
  5. fh = logging.FileHandler("spam.log")
  6. fh.setLevel(logging.DEBUG)
  7. # 建立一个streamhandler来把日志打在CMD窗口上,级别为error以上
  8. ch = logging.StreamHandler()
  9. ch.setLevel(logging.ERROR)
  10. # 设置日志格式
  11. formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
  12. ch.setFormatter(formatter)
  13. fh.setFormatter(formatter)
  14. #将相应的handler添加在logger对象中
  15. logger.addHandler(ch)
  16. logger.addHandler(fh)
  17. # 开始打日志
  18. logger.debug("debug message")
  19. logger.info("info message")
  20. logger.warn("warn message")
  21. logger.error("error message")
  22. logger.critical("critical message")

写个类封装一下

  1. #! /usr/bin/env python
  2. #coding=gbk
  3. import logging,os
  1. class Logger:
  2. def __init__(self, path,clevel = logging.DEBUG,Flevel = logging.DEBUG):
  3. self.logger = logging.getLogger(path)
  4. self.logger.setLevel(logging.DEBUG)
  5. fmt = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
  6. #设置CMD日志
  7. sh = logging.StreamHandler()
  8. sh.setFormatter(fmt)
  9. sh.setLevel(clevel)
  10. #设置文件日志
  11. fh = logging.FileHandler(path)
  12. fh.setFormatter(fmt)
  13. fh.setLevel(Flevel)
  14. self.logger.addHandler(sh)
  15. self.logger.addHandler(fh)
  16. def debug(self,message):
  17. self.logger.debug(message)
  18. def info(self,message):
  19. self.logger.info(message)
  20. def war(self,message):
  21. self.logger.warn(message)
  22. def error(self,message):
  23. self.logger.error(message)
  24. def cri(self,message):
  25. self.logger.critical(message)
  26. if __name__ =='__main__':
  27. logyyx = Logger('yyx.log',logging.ERROR,logging.DEBUG)
  28. logyyx.debug('一个debug信息')
  29. logyyx.info('一个info信息')
  30. logyyx.war('一个warning信息')
  31. logyyx.error('一个error信息')
  32. logyyx.cri('一个致命critical信息')
  1. **实例化**
  2. logobj = Logger(‘filename',clevel,Flevel)

Python自动化之logging模块的更多相关文章

  1. Python日志输出——logging模块

    Python日志输出——logging模块 标签: loggingpythonimportmodulelog4j 2012-03-06 00:18 31605人阅读 评论(8) 收藏 举报 分类: P ...

  2. Python自建logging模块

    本章将介绍Python内建模块:日志模块,更多内容请从参考:Python学习指南 简单使用 最开始,我们用最短的代码体验一下logging的基本功能. import logging logger = ...

  3. Python实战之logging模块使用详解

    用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所 ...

  4. Python中的logging模块就这么用

    Python中的logging模块就这么用 1.日志日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICALDEBUG:详细的信息,通常只出现在诊断问题 ...

  5. python中日志logging模块的性能及多进程详解

    python中日志logging模块的性能及多进程详解 使用Python来写后台任务时,时常需要使用输出日志来记录程序运行的状态,并在发生错误时将错误的详细信息保存下来,以别调试和分析.Python的 ...

  6. Python自动化之常用模块

    1 time和datetime模块 #_*_coding:utf-8_*_ __author__ = 'Alex Li' import time # print(time.clock()) #返回处理 ...

  7. Python中的logging模块

    http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...

  8. python日志记录-logging模块

    1.logging模块日志级别 使用logging模块简单示例: >>>import logging >>>logging.debug("this's a ...

  9. Python自学笔记-logging模块详解

    简单将日志打印到屏幕: import logging logging.debug('debug message') logging.info('info message') logging.warni ...

随机推荐

  1. IDEA下的第一个springBoot

    1.第一步打开File->New->Project,SDK根据自己的需要选择,我这边选的是java7 2.Next之后 设置group 和artifact,根据自己的需要进行修改. 3.导 ...

  2. element-ui中使用font-awesome字体图标

    element-ui提供的字体图标是很少的,所以我们需要集成其它图标来使用,nodejs的集成官方有说明,这里说明一下非nodejs开发集成图标 首先下载fontawesome,需要更改里面图标前缀, ...

  3. 5分钟搞定jQuery+zepto.js+面向对象插件

    今天分享一下快速使用jQuery+zepto.js的技巧,需要的记得收藏 1.jQuery的引入:本地下载jQuery(后面简称jq)的源文件,开发版本使用非min版,线上使用min版,zepto.j ...

  4. js面向对象设计之class中一些坑和技巧

    this的指向 super 类工厂,类中定义方法名时,可以使用字符串,这就可以创建工厂函数(类似模板类) Generator 函数 静态属性和私有属性.私有方法 new.target

  5. ubuntu下创建虚拟python3开发环境

    友情链接:ubuntu16.04下安装python3+创建虚拟python3开发环境 1.为什么要创建python3虚拟开发环境? /********************************* ...

  6. 润乾V5手机报表说明文档

    1.手机报表实例页面简要说明 index.jsp 是报表资源列表页面: mbReport.jsp 是报表展现页面: mbParam.jsp是参数报表展现页面: echarts.jsp是带有echart ...

  7. mybatis 在存储Integer、bigdecimal等java数据类型时,将0存成null

    我们的项目中,有关于金额的计算,所以,一般在java环境中我们使用bigdecimal来做运算和存储金额信息.数据库sqlServer2008用的float类型 问题是,当我将金额赋值成0时,很意外的 ...

  8. mysql使用笔记(网易Mysql实用手册)---1

    1帮助使用 1.1按层次查看帮助 1 当不知道帮助可提供什么时,可通过MySQL内置帮助文档,一层层往下看. 命令: mysql> ? contents ? 等效help,该文档涵盖了数据库操作 ...

  9. leetCode题解之字符最短路径解法2

    1.题目描述 2.分析 之前使用的大循环再向两边寻找的算法是 O(n^2)复杂度的,可以利用 multimap降低其复杂度. 3.代码 vector<int> shortestToChar ...

  10. 奇怪的等待事件“enq: ss - contention”

    数据库有时会遇到大量的进程发生'enq: ss - contention'等待,持续5到10分钟,然后自动消失.从字面上看,'SS'是Sort Segment: select * from v$loc ...