python logging

拥有回忆 提交于 2020-03-03 15:51:44
#!/usr/bin/env python3

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

"""

import logging


class Logger(object):
    logger = None
    format_default = "[%(asctime)s] %(filename)s %(funcName)s %(lineno)d [%(levelname)s] %(message)s"

    @classmethod
    def set_log(cls, _path, _level=logging.DEBUG, _format=format_default):
        cls.logger = logging.getLogger(_path)
        cls.logger.setLevel(logging.DEBUG)
        formatter = logging.Formatter(_format)

        # 设置屏幕日志
        # stream_handler = logging.StreamHandler()
        # stream_handler.setFormatter(formatter)
        # stream_handler.setLevel(_level)

        # 设置文件日志
        file_handler = logging.FileHandler(_path)
        file_handler.setFormatter(formatter)
        file_handler.setLevel(_level)

        # cls.logger.addHandler(stream_handler)
        cls.logger.addHandler(file_handler)
        return cls.logger


if __name__ == '__main__':
    log = Logger.set_log('Logger.log')
    log.debug('一个debug信息')
    log.info('一个info信息')
    log.warning('一个warning信息')
    log.error('一个error信息')
    log.critical('一个致命critical信息')

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!