首页 > 编程语言 >python 日志打印log

python 日志打印log

时间:2023-04-28 18:33:17浏览次数:60  
标签:console log python add rich logging 日志 message

目录

python 日志打印log

Python 中常用的打印 log 的库有以下几个:

logging

Python 标准库中的模块,提供了灵活的日志记录方式,可以输出到控制台或文件,支持级别控制、日志格式化等功能。
使用 logging 模块打印日志的一般步骤如下:
导入 logging 模块:

import logging

配置日志记录器:

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

在这里,我们使用 basicConfig 方法来配置日志记录器,其中 level 参数指定了日志级别为 DEBUGformat 参数指定了日志输出的格式,包括时间、日志名称、日志级别和日志内容。

使用日志记录器输出不同级别的日志:

logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')

在这里,我们使用 logging 模块的不同方法输出了不同级别的日志信息。
完整示例代码如下:

import logging

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')

这段代码将输出以下内容,包括时间、日志名称、日志级别和日志内容:

2021-09-01 21:08:20,017 - root - DEBUG - This is a debug message
2021-09-01 21:08:20,018 - root - INFO - This is an info message
2021-09-01 21:08:20,018 - root - WARNING - This is a warning message
2021-09-01 21:08:20,018 - root - ERROR - This is an error message
2021-09-01 21:08:20,018 - root - CRITICAL - This is a critical message

除了上述基本用法外,logging 模块还支持更加丰富的配置和扩展,比如可以将日志输出到文件、自定义日志处理器等等,具体可以参考 logging 模块的官方文档:https://docs.python.org/3/library/logging.html

loguru

一个类似 logging 的第三方库,提供了更简洁的语法和更方便的配置方式,支持彩色日志、异常捕获、自动旋转日志文件等功能。

使用 loguru 打印日志非常简单,通常只需要三步:

安装 loguru 库,可以使用以下命令进行安装:

pip install loguru

导入 loguru 模块:

from loguru import logger

配置日志记录器:

logger.add("file.log", rotation="500 MB")

在这里,我们使用 logger.add() 方法来配置日志记录器,其中 file.log 参数指定了日志输出到的文件名,rotation 参数指定了日志文件的轮转方式,这里是按照文件大小进行轮转,每个文件最大为 500MB。
最后,我们可以使用 logger 对象打印日志,例如:

logger.debug("This is a debug message")
logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")
logger.critical("This is a critical message")

loguru 还提供了更多的功能,例如可以自定义日志格式、支持异步日志记录、支持异常记录等等,具体可以参考 loguru 的官方文档:https://loguru.readthedocs.io/en/stable/index.html

coloredlogs

一个可以为 Python 的 logging 模块提供彩色日志输出的库,支持将不同级别的日志输出到不同的日志记录器中。

使用
coloredlogs 打印彩色日志非常简单,通常只需要三步:
安装 coloredlogs 库,可以使用以下命令进行安装:

pip install coloredlogs

导入 coloredlogs 模块:

import coloredlogs

配置日志记录器:

import logging

logger = logging.getLogger(__name__)
coloredlogs.install(level='DEBUG', logger=logger)

logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")

上述代码中,我们首先创建了一个名为 logger 的日志记录器,然后使用 coloredlogs.install() 方法来配置日志记录器,其中 level 参数指定了日志级别为 DEBUG,logger 参数指定了要配置的日志记录器。

最后,我们使用 logger 对象打印了三条不同级别的日志,这些日志将会以彩色的形式输出到控制台,便于我们快速区分不同级别的日志。
image

除了上述示例中的基本用法外,coloredlogs 还提供了许多其他的配置选项,比如可以自定义日志格式、选择不同的日志颜色等等,具体可以参考 coloredlogs 的官方文档:https://coloredlogs.readthedocs.io/en/latest/

rich

一个终端输出库,可以为 Python 的 logging 模块提供丰富的输出格式,支持彩色日志、代码高亮、表格输出等。

使用 rich 使命令行界面更美观和交互性更强非常简单,以下是一些基本示例:

安装 rich 库,可以使用以下命令进行安装:

pip install rich

导入 rich 模块:

from rich.console import Console

创建 Console 对象:

console = Console()

使用 console 对象打印不同样式的文本:

console.print("Hello, [bold magenta]World[/bold magenta]!", style="bold red")
console.print("This is an [underline]underlined[/underline] text.")
console.print("This is a [link=https://www.google.com]link[/link].")
console.print("This is a [italic]italic[/italic] text.")
console.print("This is a [reverse]reversed[/reverse] text.")
console.print("This is a [blink]blinking[/blink] text.")

//在这里,我们使用 `console.print()` 方法打印了不同样式的文本,例如加粗、颜色、下划线、超链接、斜体、反转和闪烁等。

使用 rich 模块的其他功能,例如表格、进度条和图形等:

from rich.progress import track
from rich.table import Table

table = Table(title="Star Wars Movies")
table.add_column("Episode")
table.add_column("Title")
table.add_column("Director")

table.add_row("IV", "A New Hope", "George Lucas")
table.add_row("V", "The Empire Strikes Back", "Irvin Kershner")
table.add_row("VI", "Return of the Jedi", "Richard Marquand")

console.print(table)

with track(range(100)) as progress:
    for item in progress:
        # do some work here
        pass

from rich.console import Console
from rich.panel import Panel

console = Console()

panel = Panel("Hello, World!", title="[bold green]Message")

console.print(panel)

from rich.graph import Graph

graph = Graph()

graph.add_edge("a", "b")
graph.add_edge("a", "c")
graph.add_edge("a", "d")
graph.add_edge("b", "c")

console.print(graph)

在这里,我们使用了 rich 模块的其他功能,例如表格、进度条和图形等,可以根据需要选择使用。
完整示例代码如下:

from rich.console import Console
from rich.progress import track
from rich.table import Table

console = Console()

console.print("Hello, [bold magenta]World[/bold magenta]!", style="bold red")
console.print("This is an [underline]underlined[/underline] text.")
console.print("This is a [link=https://www.google.com]link[/link].")
console.print("This is a [italic]italic[/italic] text.")
console.print("This is a [reverse]reversed[/reverse] text.")
console.print("This is a [blink]blinking[/blink] text.")

table = Table(title="Star Wars Movies")
table.add_column("Episode")
table.add_column("Title")
table.add_column("Director")

table.add_row("IV", "A New Hope", "George Lucas")
table.add_row("V", "The Empire Strikes Back", "Irvin Kershner")
table.add_row("VI", "Return of the Jedi", "Richard Marquand")

console.print(table)

with track(range(100)) as progress:
    for item in progress:
        # do some work here
        pass

from rich.console import Console
from rich.panel import Panel

console = Console()

panel = Panel("Hello, World!", title="[bold green]Message")

console.print(panel)

from rich.graph import Graph

graph = Graph()

graph.add_edge("a", "b")
graph.add_edge("a", "c")
graph.add_edge("a", "d")
graph.add_edge("b", "c")

console.print(graph)

rich 还提供了很多其他的功能和定制选项,例如表单、列表、选择器、文件树等等,具体可以参考 rich 的官方文档:https://rich.readthedocs.io/en/latest/

总结

以上这些库都可以用来打印 log,选择哪一个库取决于你的具体需求和习惯。其中,logging 是 Python 标准库自带的日志库,使用较为广泛,loguru 是一个较为新的库,使用较为简便,rich 则是一个专注于终端输出的库,可以为 log 提供更加美观的输出效果。

标签:console,log,python,add,rich,logging,日志,message
From: https://www.cnblogs.com/liwenchao1995/p/17362930.html

相关文章

  • python设定闹钟提醒
    importtimeimportdatetime#设置提醒时间(24小时制)study_time="8:00:00"eat_time="12:00:00"sleep_time="23:00:00"whileTrue:#获取当前时间now=datetime.datetime.now().strftime("%H:%M:%S")#如果当前时间与提醒......
  • weblogic中使用commons-lang 出现 NoSuchMethodError错误
    weblogic中使用commons-lang出现NoSuchMethodError错误 项目中使用了commons-lang-2.4.jarweblogic启动时预先加载了一个commons-lang的包(bea11g\modules\com.bea.core.apache.commons.lang_2.1.0.jar)这样jar包版本出现冲突 在plan/WEB-INF下面添加weblogic.xml文件,其中添加以......
  • 在使用showModalDialog中为解决刷新时弹出新窗口时用到iframe所带来的一个问题
    问题描述:我们在开发过程中使用showModalDialog来产生一个弹出窗口,而在这个弹出窗口中要做一个刷新,或者是切换到其它的url时会弹出新窗口。为了解决这个问题,网上有个办法是采用iframe,在showModalDialog窗口中使用iframe这样就不会有弹出窗口了,但这样使用又带来了一个小的问题,我们页......
  • Redis WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/s
    RedisWARNING:TheTCPbacklogsettingof511cannotbeenforcedbecause/proc/sys/net/core/somaxconnissettothelowervalueof128. 内核参数默认128,对于负载很大的服务是不够的。改为2048或者更大echo2048> /proc/sys/net/core/somaxconn  系统重启后失效v......
  • Python_Gooey和pyinstaller打造易用的工具
    Python沟通Python搭建GUI界面时,首选Gooey,然后PyQt5和Tkinter,Pyinstaller:--paths后接第三方模块的路径,多个路径直接用逗号分隔(英文逗号)-F后接源文件路径使用-F,只生成一个大的可执行文件--clean表示清理打包完成后的临时文件(可选,但建议写上)......
  • python用支持向量机回归(SVR)模型分析用电量预测电力消费|附代码数据
    全文链接:http://tecdat.cn/?p=23921最近我们被客户要求撰写关于SVR的研究报告,包括一些图形和统计输出。本文描述了训练支持向量回归模型的过程,该模型用于预测基于几个天气变量、一天中的某个小时、以及这一天是周末/假日/在家工作日还是普通工作日的用电量关于支持向量机的快速......
  • CDialogBar窗口的悬浮设置
    (1)创建Dialog后将其设置为ToolWindow,其它和CDialogBar要求一样(2)在OnCreat里添加代码       if(!m_Bar.Create(this,IDD_HISTOGRAM,CBRS_LEFT,ID_VIEW_HISTOGRAM)){TRACE0("Failedtocreatedialogbar/n");return-1;......
  • python学习——【第十九弹】
    前言从文章 python学习——【第十七弹】开始,我们开始进入python巩固篇,利用所学基础知识来做一个简单的学生信息管理系统,温故而知新。上篇文章python学习——【第十八弹】我们编写了学生信息管理系统的查询功能,这篇文章实现学生信息的删除功能。需求分析之前的学习我们了解了py......
  • 常见配置文件在Python中的使用
     配置文件主要为了存储常用的常量,如数据库的信息,通用的账号和密码等。常见的配置文件格式有ini,yaml,toml,json,env等,在做自动化测试的时候,它们都起什么样的作用?在什么样的场合下应用哪些配置文件? 一、ini配置文件简介:ini配置文件是最直接的配置文件,也是最简单的配置文件,将变量......
  • Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测|附代
    全文下载链接: http://tecdat.cn/?p=27042最近我们被客户要求撰写关于新冠疫情的研究报告,包括一些图形和统计输出。在本文中,该数据根据世界各国提供的新病例数据提供。获取时间序列数据df=pd.read_csv("C://global.csv")探索数据此表中的数据以累积的形式呈现,为了找出每天......