python输出日志


import logging
FORMAT = "%(asctime)s %(thread)d %(message)s"
logging.basicConfig(level=logging.INFO, format=FORMAT)


class TestSchedule():

    def setup_class(self):
        logging.info("清理测试数据--------删除所有闹钟")

    def test_add_schedule(self):
        logging.info("添加闹钟:响铃一次、循环闹钟")

    def test_add_same_schedule(self):
        logging.info("测试添加重复闹钟")



if __name__ == "__main__":
    test = TestSchedule()
    test.setup_class()
    test.test_add_schedule()
    test.test_add_same_schedule()

[python] Python日志记录库loguru使用指北

在loguru中,add函数用于添加日志处理器。这个函数用于指定日志消息应该被发送到何处,例如控制台、文件或其他自定义的目的地。add函数主要参数介绍如下:

  • sink: 定义日志消息的输出位置,可以是文件路径、标准输出(stdout)、标准错误(stderr,默认)或其他自定义的输出位置。

  • format: 指定日志消息的格式,可以是简单的字符串,也可以是格式化字符串,支持各种字段插值。

  • level: 设置处理程序处理的日志消息的最低级别。比如设置为DEBUG,则处理程序将处理所有级别的日志消息。

  • filter: 可选参数,用于添加过滤器,根据特定的条件过滤掉不需要的日志消息。

  • colorize: 布尔值,指定是否对日志消息进行着色处理,使日志在控制台中更易于区分。

  • serialize: 布尔值,指定是否对日志消息进行序列化处理,通常与enqueue=True一起使用,以确保多线程安全。

  • enqueue: 布尔值,指定是否将日志消息放入队列中处理,用于多线程应用中避免阻塞。

  • backtrace: 布尔值或字符串,指定是否记录回溯信息,默认为False

  • diagnose: 布尔值,启用后,会在处理程序内部出现错误时记录诊断信息。

  • rotation: 日志文件轮换的配置,支持按大小或时间进行日志文件的轮换。

  • retention: 用于设置日志文件的保留时间。

  • compression: 布尔值,指定是否对轮换后的日志文件进行压缩处理。

from loguru import logger

logger.debug("这是一条调试消息")
logger.info("这是一条信息消息")
logger.success("这是一条成功消息")
logger.warning("这是一条警告消息")
logger.error("这是一条错误消息")
logger.critical("这是一条关键错误消息")

 设置输出到文件

from loguru import logger
logger.add("file.log")
logger.info("这条消息将会记录到文件中")

设置输出到文件,格式化 

from loguru import logger
logger.add("file.log", format="{time} {level} {message}")
logger.info("这是一条格式化的日志消息")

 

 按大小、时间进行日志文件的轮换

from loguru import logger

# 设置日志输出格式
logger.add('file.log', rotation='100 MB', format='{time} - {level} - {message}')

# 记录日志信息
logger.debug('Debug message')
logger.info('Info message')
logger.warning('Warning message')
logger.error('Error message')
logger.critical('Critical message')

logger.add("file_1.log", rotation="100 MB")
# 每天中午12时创建新的日志文件,旧文件保留并重命名
logger.add("file_2.log", rotation="12:00")
# 当日志文件存在超过一周时创建新的日志文件,旧文件保留并重命名
logger.add("file_3.log", rotation="1 week")
# 设置日志文件保留10天
logger.add("file_4.log", retention="10 days")
# 当文件大小达到100MB时创建新的日志文件,旧文件保留压缩为zip文件
logger.add('file_{time}.log', rotation="100 MB", compression='zip')

日志的过滤 

from loguru import logger
logger.add("file.log", filter=lambda record: record["level"].name == "INFO")
logger.debug("这条消息不会被记录")
logger.info("这条消息会被记录")
logger.warning("这条消息也不会被记录")

from loguru import logger

# 定义一个过滤器函数
defmy_filter(record):
# 只记录包含 "第一" 的日志
return"第一"in record["message"]

# 使用过滤器
logger.add("myapp.log",filter=my_filter)

# 记录一些日志
logger.info("第一个记录")
logger.info("第二个记录")

 

from loguru import logger
import sys

# 终端显示不受该段代码设置
# 添加一个日志处理器,输出到文件
# 设置日志最低显示级别为INFO,format将设置sink中的内容
# sink链接的本地文件,如不存在则新建。如果存在则追写
logger.add(sink="myapp.log", level="INFO", format="{time:HH:mm:ss}  | {message}| {level}")

# debug结果不被显示到本地文件
logger.debug("这是一条调试信息")
logger.info("这是一条普通信息")

 

 logger.remove()之后的所有日志将不会被记录

from loguru import logger
# 移除所有日志处理器(包括终端输出)
logger.remove()
# 没有输出
logger.info("这是一条普通信息存入myapp3")

 输出屏幕的过滤

from loguru import logger
import sys

logger.remove()# 移除默认输出
# 添加一个日志处理器,输出到控制台,使用自定义格式
logger.add(
    sink=sys.stdout,
    level="INFO",
# green表示颜色
format="<green>{time:HH:mm}</green> {level} <level>{message}</level>"
)

# 注意终端显示会同步显示
logger.debug("这是一条调试信息")
logger.info("这是一条普通信息")

异常捕获 

from loguru import logger

logger.add(sink='myapp.log')

@logger.catch
def my_function(x, y):
    return x / y
        
res = my_function(0,0)

 

结合bind方法进行过滤,bind方法用于向日志记录器添加额外的上下文信息。这些信息将被包含在每条日志消息中,但不会改变日志消息本身 

from loguru import logger

def filter_user(record):
    return record["extra"].get("user") =="A"

logger.add("myapp.log", filter=filter_user)

# 绑定user
logger.bind(user="A").info("来自A")
logger.bind(user="B").info("来自B")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值