python logging模块简单使用

1.创建一个日志对象,代码如下

import logging

#创建一个日志对象,传入对象名称
logger = logging.getLogger("test")
print(logger.name)

控制台输出如下

test

2,定义日志对象的输出等级,输出等级从大到小依次为:CRITICAL、ERROR、WARNING、INFO、DEBUG、NOTEST。代码如下:

import logging

#创建一个日志对象
logger = logging.getLogger("test")
logging.basicConfig()
#定义日志的输出等级,不小于INFO的日志将被输出
logger.setLevel(logging.INFO)

logger.warning("我是一个warning日志")
logger.info("我是一个info日志")
#debug等级小于info,不在控制台打印
logger.debug("我是一个debug日志")

控制台输出入下:

WARNING:test:我是一个warning日志
INFO:test:我是一个info日志

3.定义日志输出的方式。对象名.addHandler(logging.StreamHandler())--日志在控制台输出。对象名.addHandler(logging.FileHandler("文件名"))--日志在指定文件输出。文件名不加路径时,日志文件创建在当前脚本运行的目录下。如果加路径,日志文件创建在指定路径下。

import logging

#创建一个日志对象
logger = logging.getLogger("test")
#定义控制台输出日志
logger.addHandler(logging.StreamHandler())
#定义文件输出日志,必传参数为filename,filename = os.fspath(filename)
logger.addHandler(logging.FileHandler("test.log"))
#定义日志的输出等级,不小于INFO的日志将被输出
logger.setLevel(logging.INFO)
logger.warning("我是一个warning日志")

4.定义不同输出方式日志输出等级。定义控制台输出的等级为info,文件输出的等级为warning,具体代码如下

import logging

#创建一个日志对象
logger = logging.getLogger("test")
#设置日志的输出等级
logger.setLevel(logging.DEBUG)
#定义StreamHandler,用于控制台输入
sh = logging.StreamHandler()
#定义StreamHandler的输出等级
sh.setLevel(logging.INFO)
#将sh添加到logger中
logger.addHandler(sh)
#定义FileHandler,用于文件输出
fh = logging.FileHandler("test.log",encoding="utf-8")
#定义FileHandler的输出等级
fh.setLevel(logging.WARNING)
#将fh添加到logger中
logger.addHandler(fh)

#输出日志
logger.warning("我是一个warning日志")
logger.info("我是一个info日志")

控制台输出:

我是一个warning日志
我是一个info日志

文件输出内容:

我是一个warning日志

5.输出日志的格式代码如下

import logging

logger = logging.getLogger("test")
logger.setLevel(logging.DEBUG)
#定义日志的输出格式
fmt = logging.Formatter('%(name)s - %(levelname)s - %(asctime)s - %(message)s')
sh = logging.StreamHandler()
sh.setLevel(logging.INFO)
#添加fmt到sh
sh.setFormatter(fmt)
logger.addHandler(sh)

#输出日志
logger.warning("我是一个warning日志")
logger.info("我是一个info日志")

控制台输出:

test - WARNING - 2019-08-05 11:26:27,477 - 我是一个warning日志
test - INFO - 2019-08-05 11:26:27,477 - 我是一个info日志

6.日志类的封装

class Looger(object):

    def __init__(self,log_name,log_path):
        #创建日志对象
        self.logger = logging.getLogger(log_name)
        self.logger.setLevel(logging.DEBUG)
        #定义日志输出格式
        fmt = logging.Formatter('%(name)s - %(levelname)s '
                                '- %(asctime)s - %(message)s')

        #定义控制台输出
        sh = logging.StreamHandler()
        sh.setLevel(logging.INFO)
        sh.setFormatter(fmt)
        self.logger.addHandler(sh)
        # 创建一个handler,用于写入日志文件
        rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
        # 日志路径
        flie_name = log_path + "/" + rq + '.log'
        print(flie_name)
        # 如果不存在定义的日志目录就创建一个
        if not os.path.isdir(log_path):
            os.mkdir(log_path)
        #定义文件
        fh = logging.FileHandler(flie_name,encoding="utf-8")
        fh.setLevel(logging.DEBUG)
        fh.setFormatter(fmt)
        self.logger.addHandler(fh)

    def log(self):
        return self.logger

if __name__ == "__main__":
    log_path = os.path.dirname(__file__)
    my_log = Looger("test001",log_path)
    my_log.log().info("我是一个info日志")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值