zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    Mycat的server.xml配置
    Docker构建Mycat(单节点)
    Mycat相关概念解读
    Mycat简介及适用场景
    SpringBoot整合WebService
    SpringBoot事务简单操作及手动回滚
    对事务及其注解@Transactional的解读
    git将某分支的某次提交合并到另一分支
    SpringBoot快速支持国际化i18n
    SpringBoot多数据源自动切换
  • 原文地址:https://www.cnblogs.com/nx520zj/p/5886719.html
Copyright © 2011-2022 走看看