首页 > 编程语言 >python使用loguru入门

python使用loguru入门

时间:2024-11-12 11:57:35浏览次数:1  
标签:入门 loguru level python message json 日志 logger log

自定义json格式

from loguru import logger
import json
from datetime import datetime

# 定义一个函数来创建 JSON 格式的日志
def json_log(level, message, **kwargs):
    log_entry = {
        "time": datetime.now().isoformat(),
        "level": level.upper(),
        "message": message,
    }
    # 将任何额外的关键字参数添加到日志条目中
    log_entry.update(kwargs)
    
    # 序列化字典为 JSON 字符串并记录
    logger.log(level, json.dumps(log_entry))

# 设置 Loguru 的配置
logger.add("logs/{time:YYYY-MM-DD}.log", rotation="1 day", retention="10 days")

# 使用 json_log 函数记录不同级别的日志
json_log("INFO", "This is an informational message")
json_log("WARNING", "This is a warning message", user="JohnDoe", item="Widget")
json_log("ERROR", "This is an error message", error_code=500, user="JaneDoe")

复杂点的

from loguru import logger

# format:表示日志格式化。{level:8}</>表示按照日志级别显示颜色。8表示输出宽度为8个字符。
# colorize: True**:表示显示颜色。
# 当前文件的目录路径
#dir_path = os.path.abspath(os.path.dirname(__file__))
# 日志路径
#log_file_path = os.path.join(dir_path, 'loguru_{time:%Y-%m-%d}.log')
# 配置日志输出到文件,输出最低等级为info,格式自定义
# 设置每天 0 点新创建一个 log 文件:json格式,并发安全
# logger.add(log_file_path, format="{time} {level} {message}", level="INFO",rotation='00:00',encoding='utf-8',enqueue=True)
# logger.debug('debug msg')
# logger.info('info msg')
# 设置超过 500 MB 新创建一个 log 文件:
# logger.add('runtime_{time}.log', rotation="500 MB")
# 设置每隔一个周新创建一个 log 文件:
# logger.add('runtime_{time}.log', rotation='1 week')

# 可以放配置内,这里单独提出来
folder_ = "./"
prefix_ = "loguru-"
rotation_ = "00:00"
retention_ = "7 days"
encoding_ = "utf-8"
backtrace_ = False  #记录堆栈
diagnose_ = False  #记录诊断信息

# 格式里面添加了process和thread记录,方便查看多进程和线程程序
format_ = '<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> ' \
            '| <magenta>{process}</magenta>:<yellow>{thread}</yellow> ' \
            '| <cyan>{name}</cyan>:<cyan>{function}</cyan>:<yellow>{line}</yellow> - <level>{message}</level>'

# 这里面采用了层次式的日志记录方式,就是低级日志文件会记录比他高的所有级别日志,这样可以做到低等级日志最丰富,高级别日志更少更关键
logger.add(folder_ + prefix_ + "{time:%Y-%m-%d}.log", level="INFO", backtrace=backtrace_, diagnose=diagnose_,
            format=format_, colorize=False,
            rotation=rotation_, retention=retention_, encoding=encoding_,
            filter=lambda record: record["level"].no >= logger.level("INFO").no)
#测试打印日志
logger.info('info msg')

标签:入门,loguru,level,python,message,json,日志,logger,log
From: https://www.cnblogs.com/qcy-blog/p/18541544

相关文章

  • python毕设超市进销存管理系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于超市进销存管理系统的研究,现有研究主要以大型企业的进销存管理为主,专门针对超市这一特定场景的进销存管理研究较少。在国内外的研......
  • Python程序:计算特定数列之和
    题目要求编写一个Python程序,计算数列$s=a+aa+aaa+aaaa+\ldots$的和,其中$a$是一个数字,数列中每个数都是由$a$重复组成,且重复次数逐渐增加。用户可以通过键盘控制数列中相加的数的个数。解题思路为了计算这个数列的和,我们需要首先理解数列的构成。每个数都......
  • python文件修改有没有办法警告通知
    在Python中设置文件修改的警告通知,可以通过几种不同的方法实现。以下是两种常见的方法:使用watchdog库进行实时监控:watchdog是一个跨平台的文件系统监控工具,它可以用来监控文件或目录的变化,如文件的创建、修改、删除等。你可以通过定义一个事件处理器来响应文件修改事件,并在事件......
  • 这可能是最好的Spring教程!即便无基础也能看懂的入门Spring,仍在持续更新。
    开启这样一个系列的原因    这一段时间都在学spring,但是在学习的过程中一直都很难找到一个通俗易懂,又带了学习体系的文章教程,很多地方都不懂,需要自己去慢慢查询和理解,感觉学起来很耗时,所以我自己就像写一个这样能通俗易懂的Spring入门,让其他想我一样的小白也能速通入门。 ......
  • JVM 参数配置入门与优化案例
    文章目录JVM参数配置入门与优化案例基础内存参数配置堆内存(HeapMemory)元空间(Metaspace)新生代与老年代比例直接内存(DirectMemory)垃圾回收器(GC)设置OOM异常分析设置GC日志设置实战配置案例:Netty服务配置总结与优化建议JVM参数配置入门与优化案例在Java应用的......
  • 运行python常用语句记录(持续更新,欢迎讨论补充)
    代码整合标题后,直接点目录CMD常用语句记录查看信息(全部、环境、库)创建、运行虚拟环境库的操作安装库conda安装pip安装官网安装(自己下载安装)requirement.txt安装源代码安装导出库删除库更新库镜像源运行python文件python常用语句记录调用gpu或cpu小白记录,如有错......
  • Playwright——快速入门(初章)
    Playwright:引领自动化测试的未来在数字化时代,Web应用的复杂性和用户期望的提高对软件测试提出了更高的要求。微软开发的Playwright,作为一个创新的自动化测试框架,正以其卓越的性能和全面的浏览器支持,重新定义Web自动化测试的标准。什么是Playwright?Playwright是一个跨浏览......
  • Python 进行数据挖掘的算法介绍
    1.决策树决策树是一种用于分类和回归任务的监督学习算法。它通过树状结构来表示决策过程,每个内部节点表示一个属性上的测试,每个分支代表一个测试结果,每个叶节点代表一种分类结果。示例代码:fromsklearn.datasetsimportload_irisfromsklearn.treeimportDecisionTreeCl......
  • 终于弄懂了Python位置参数与关键字参数
    Python位置参数与关键字参数在Python函数的使用中,函数的参数是一种让调用者向函数传递信息的手段。函数可以通过参数接收外部提供的值,从而根据这些值执行特定的操作。本节我们将重点讲解位置参数和关键字参数两种参数类型,它们是定义和调用函数时最基础的参数形式。1.位置......
  • Python条件赋值:一种强大的控制流程方式
    在编程中,条件赋值是一种非常常见的操作,它允许我们在满足特定条件时对变量进行赋值。Python作为一种广泛应用的编程语言,自然也支持这种操作。本文将对Python中的条件赋值进行简要解读和分析。什么是条件赋值?条件赋值,顾名思义,就是在满足某个条件时进行的赋值操作。在Python中,我......