Python3-logging模块-日志记录

Python3中的logging模块提供了较为灵活的事件日志系统

  日志级别

    DEBUG < INFO < WARING(Python默认) < ERROR < FATAL(CRITICAL)

  logging模块常用的类主要有以下几个

    logging.Logger

      主要提供应用程序代码直接使用的接口,一般不会直接实例化,而是通过logging.getLogger(name)得到

    logging.Handler

      日志处理对象的基类,不应实例化,被实例化的应该是其子类,如logging.StreamHandler,它负责发送日志记录到正确的目标

    logging.Formatter

      它决定了以怎样的格式来进行打印日志记录,常用的日志格式如下:

      %(name)s

        Logger对象的名字

      %(levelname)s

        日志级别的英文表示

      %(filename)s

        调用日志输出函数的模块名

      %(lineno)s

        调用日志输出函数的语句所在的代码行

      %(asctime)s

        字符串形式的当前时间

      %(message)s

        用户输出的消息

示例代码

import logging

# 1.初始化日志默认配置
logging.basicConfig(filename='./my.log',                                                 # 日志输出文件
                    level=logging.DEBUG,                                                 # 日志写入级别
                    datefmt='%Y-%m-%d %H:%M:%S',                                         # 时间格式
                    format='%(asctime)s %(levelname)s Line:%(lineno)s==>%(message)s')    # 日志写入格式

# 2.打印不同级别的日志记录
logging.debug("debug级别的日志")
logging.info("info级别的日志")
logging.warning("warning级别的日志")
logging.error("error级别的日志")
logging.critical("fatal级别的日志")
1.基础配置仅打印日志到文件

import logging

# Formatter对象 用于决定日志打印的格式
fmt = logging.Formatter("%(asctime)s %(levelname)s Line:%(lineno)s==>%(message)s")
fmt.datefmt = "%Y-%m-%d %H:%M:%S"      # 可以自定义时间的格式

# Handler对象 将(logger创建的)日志记录发送到合适的目的输出
ch = logging.StreamHandler()            # 标准输出流处理对象
ch.setFormatter(fmt)
ch.setLevel(logging.WARNING)

fh = logging.FileHandler("./jet.log")   # 文件处理对象
fh.setFormatter(fmt)
fh.setLevel(logging.FATAL)

# Logger对象 对外暴露的接口
logger = logging.getLogger("Jet")
logger.addHandler(ch)
logger.addHandler(fh)
logger.setLevel(logging.INFO)         # 日志级别总控制,以它为最低级别


# 日志输出
logger.debug("debug级别的日志")
logger.info("info级别的日志")
logger.warning("warning级别的日志")
logger.error("error级别的日志")
logger.critical("fatal级别的日志")
2.自定义配置双向输出日志到控制台和文件

参考资料

  http://python.usyiyi.cn/translate/python_352/library/logging.html

  

posted on 2017-03-29 16:22  AustralGeek  阅读(1161)  评论(0编辑  收藏  举报

导航