python | Logging日志标准库的常见使用方法(手搓日志记录装饰器)


01 基础使用

日志级别从低到高分为:DEBUG < INFO < WARNING < ERROR < CRITICAL
使用前需要设置记录的日志级别,只有大等于该日志级别的日志才会被记录。
例如,设置日志级别为WARNING,则WARNINGERRORCRITICAL三种级别的日志才会被记录。

import logging

# 使用前需要先设置日志级别 这里设置的是DEBUG
logging.basicConfig(level=logging.DEBUG)
logging.debug("这是一个debug消息")
logging.info("这是一个info消息")
logging.warning("这是一个warning消息")
logging.error("这是一个error消息")
logging.critical("这是一个critical消息")

运行这段代码,可以在控制台看到以下输出:

DEBUG:root:这是一个debug消息
INFO:root:这是一个info消息
WARNING:root:这是一个warning消息
ERROR:root:这是一个error消息
CRITICAL:root:这是一个critical消息

02 日志格式化

可以自定义日志的输出格式,参考:

logging.basicConfig(
    level=logging.DEBUG,
    format="%(asctime)s [%(levelname)s]: %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S"
)

03 输出到文件

默认情况下,日志输出到控制台。如果你想把日志输出到文件,可以这样设置:

logging.basicConfig(
    filename='app.log',
    level=logging.DEBUG,
    format="%(asctime)s [%(levelname)s]: %(message)s"
)

04 手搓一个日志装饰器

手写一个装饰器,该装饰器挂在函数上,可以实现打印函数的输入与输出。
下面是参考代码:

import logging
from functools import wraps

# 定义日志级别和格式化
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S'
)


def return_log(func):
    """用于输出打印函数的返回值"""
    @wraps(func)
    def wrapper(*args, **kwargs):
        result = func(*args, **kwargs)
        logging.info(f"func <{func.__name__}> return: {result}")
        return result
    return wrapper


def args_log(func):
    """用于输出打印函数的传入参数"""
    @wraps(func)
    def wrapper(*args, **kwargs):
        logging.info(f"func <{func.__name__}> args: {args}, kwargs: {kwargs}")
        return func(*args, **kwargs)
    return wrapper
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿林仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值