python日志 logging模块

logging相关知识

日志级别使用场景
DEBUG详细信息,一般只在调试问题时使用
INFO证明事情按预期工作
WARNING某些没有预料到的时间提示,或者在将来可能会出现的问题提示
ERROR由于更严重的问题,软件已不能执行一些功能了
CRITICAL严重错误,表明软件已不能继续运行了

注释:
严重级别 : CRITICAL>ERROR>WARNING>INFO>DEBUG
默认等级: WARNING
设置输出日志级别: 如果日志等级是WARNING, 日志只能打印WARNING 和 以上的日志内容, 严重级别小于WARING是不打印的

默认生成的root logger的level是logging.WARNING,低于该级别的就不输出了

Formatter对象设置日志信息最后的规则、结构和内容

参数输出内容
%(name)sLogger的名字
%(levelno)s数字形式的日志级别
%(message)s用户输出的信息
%(levelname)s文本形式的日志级别
%(pathname)s调用日志输出函数的模块的完整路径名,可能没有
%(filename)s调用日志输出函数的模块的文件名
%(module)s调用日志输出函数的模块名
%(lineno)d调用日志输出函数的语句所在的代码行
%(asctime)s字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d线程ID, 可能没有
%(threadName)s线程名。可能没有

logging打印到控制台

import logging
logging.debug('it is debug')
logging.info('it is info')
logging.warning('it is waring')
logging.error('it is error')
logging.critical('it is critical')
输出只有:
WARNING:root:it is waring
ERROR:root:it is error
CRITICAL:root:it is critical
注释: 默认生成的root logger的level是logging.WARNING,低于该级别的就不输出了

logging输出到文件中

import logging
#创建一个logger
logger = logging.getLogger()
#设置log等级开关
logger.setLevel(logging.INFO)
logfile = 'recorder.log'
fh = logging.FileHandler(logfile, mode='w', encoding='utf-8')
#设置输出格式
fh.setLevel(logging.DEBUG)
#设置格式
formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
fh.setFormatter(formatter)
#将logger添加到hander里面
logger.addHandler(fh)
logger.debug('this is a logger debug message')
logger.info('this is a logger info message')
logger.warning('this is a logger warning message')
logger.error('this is a logger error message')
logger.critical('this is a logger critical message')

简单日志装饰器

import logging
import json

def create_log():
    logger = logging.getLogger()
    # 设置log等级开关
    logger.setLevel(logging.INFO)
    logfile = 'warrp.log'
    fh = logging.FileHandler(logfile, mode='w', encoding='utf-8')
    # 设置输出格式
    fh.setLevel(logging.DEBUG)
    # 设置格式
    formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
    fh.setFormatter(formatter)
    # 将logger添加到hander里面
    logger.addHandler(fh)
    return logger


def write_log(func):
    def wrapper():
        result = func()
        logger = create_log()
        logger.info(json.dumps(result))
        return result
    return wrapper

@write_log
def func():
    return {'name': 'hh', 'age': 20}

if __name__ == '__main__':
	func()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值