• python logging模块使用


    近来再弄一个小项目,已经到收尾阶段了。希望加入写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)
  • 相关阅读:
    hdu 1593 find a way to escape
    bzoj4561: [JLoi2016]圆的异或并
    hdu 3511 Prison Break
    hdu 5299 Circles Game
    ORA-15025: could not open disk "/dev/asm***"--转载
    修改目的端trail文件的最大大小--转载
    MYSQL PERFORMANCE_SCHEMA HINTS
    Oracle 收缩表大小 Oracle Shrink Table --转载
    InnoDB: Error number 24 means ‘Too many open files’.--转载
    使用asmcmdcp命令把datafile从文件系统移动(move)到asm磁盘组中 针对11gR2
  • 原文地址:https://www.cnblogs.com/nx520zj/p/5886719.html
Copyright © 2020-2023  润新知