近来再弄一个小项目,已经到收尾阶段了。希望加入写log机制来增加程序出错后的判断分析。尝试使用了python logging模块。

#-*- coding:utf-8 -*-
import logging
import sys
class LogRecord(object):
def __init__(self):
self.mylogger = logging.getLogger('iplog')
self.mylogger.setLevel(logging.WARNING)
#创建一个handler,用于写入日志文件
self.fn = logging.FileHandler(sys.path[0]+'/iplog.log','a')
#定义handler的输出格式formatter
self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(filename)s[line:%(lineno)d] %(message)s')
#定义handler的输出格式
self.fn.setFormatter(self.formatter)
#给mylogger添加handler
self.mylogger.addHandler(self.fn) def GetLogObj(self):
return self.mylogger

logging模块使用起来也比较简单。

logging.getLogger([name]):

返回一个logger对象,如果没有指定名字将返回root logger。

self.mylogger.setLevel(level):

指定最低的日志级别,可用的日志级别有logging.DEBUG<logging.INFO<logging.WARNING<logging.ERRO<logging.CRITICAL。

只有日志等级大于或等于设置的日志级别的日志才会被输出。

logging.FileHandle(path):

创建一个handler,用于写入日志文件.也可以创建一个StreamHandle控制台输出。还有很多Handle就大家自行进行扩展了。

logging.Formatter(*args):

定义handler的输出格式formatter。输出格式有很多。

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

self.fn.setFormatter(self.formatter):

将输出格式绑定到handle上。

self.mylogger.addHandler(self.fn):

将handle绑定到mylogger对象上。

接下来就直接调用mylogger.error or debug or warning or info.....,直接输出到指定的log文件中了。但是要记得当前的self.mylogger.setLevel(logging.WARNING)是什么?只要大于或者等于WARING的日志等级才会被写入log文件中。

if status_first == -1:
  self.mylogger.error("new_ipurl = %s,first download is failed!fail url save." % new_ipurl) self.failurllst.append(new_ipurl) 
else:
  self.mylogger.debug("new_ipurl = %s,download is success!" % new_ipurl)

最新文章

  1. Naked Search in service
  2. 关于TCP传输速率的测量方法
  3. linux主机vps简单性能测试
  4. [转] jQuery Infinite Ajax Scroll(ias) 分页插件介绍
  5. PHP学习之中数组--创建数组【1】
  6. 51nod 1244 莫比乌斯函数之和(杜教筛)
  7. 我的Python成长之路---第一天---Python基础(3)---2015年12月26日(雾霾)
  8. 在 VS 类库项目中 Add Service References 和 Add Web References 的区别
  9. 好久没发贴了,最近捣鼓了个基于node的图片压缩小网站解析。
  10. 学习PID
  11. 【CODEVS 6384 大米兔学全排列】
  12. wordpress上下篇
  13. (七)File 文件的操作
  14. Android 性能优化之减少UI过度绘制
  15. asp.net上传图片到服务器
  16. SQL语法基础之高级应用
  17. Mybatis 传递多个参数
  18. 在 Ubuntu 上安装 TensorFlow (官方文档的翻译)
  19. chunk writer 中需要对抛错的交易进行回滚,同时又要在其他表中记录是哪一笔交易记录失败
  20. Easyui入门视频教程 第06集---Layout初始化和属性方法使用

热门文章

  1. 简单的FIRST集演示程序
  2. Parameterized tests
  3. java项目使用Echarts 做柱状堆叠图,包含点击事件
  4. 361. Bomb Enemy
  5. Linux 相关scsi命令
  6. webservice使用基本技巧
  7. POJ 2431 Expedition (STL 优先权队列)
  8. UML学习之类图
  9. hash定义
  10. [Angular 2] Template property syntax