Python中logging:设置打印级别,打印格式,打印颜色

Python学习之-logging模块及彩色日志详解 Python的logging模块是内建的、功能强大的日志系统,可通过简单的配置,就能满足基本到复杂的日志管理需求。它可以让你以各种方式记录错误、调试信息、以及其他运行时的信息,这些都是应用程序健壯性、可维护性的关键。 阅读详情

目录

前言

一、引入库

二、实现代码

三、运行结果

四、补充知识

                logging模块的日志级别


前言

控制log的打印级别,打印格式,控制台根据log级别打印不同的颜色


一、引入库

import logging
import colorlog
import datetime
import os

二、实现代码

import logging
import colorlog
import datetime
import os


class Logging(object):

    def log(self, level='INFO'):  # 生成日志的主方法,传入对那些级别及以上的日志进行处理

        log_colors_config = {
            'DEBUG': 'white',
            'INFO': 'white',
            'WARNING': 'yellow',
            'ERROR': 'red',
            'CRITICAL': 'bold_red',
        }

        logger = logging.getLogger()  # 创建日志器
        # levle = getattr(logging, level)  # 获取日志模块的的级别对象属性
        logger.setLevel(level)  # 设置日志级别
        # console_handler.setLevel(logging.DEBUG)
        # file_handler.setLevel(logging.INFO)

        root_path = os.getcwd()
        file_name = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + ".log"
        log_path = os.path.join(root_path, r"output\logfiles", file_name)

        if not logger.handlers:  # 作用,防止重新生成处理器
            sh = logging.StreamHandler()  # 创建控制台日志处理器
            fh = logging.FileHandler(filename=log_path, mode='a', encoding="utf-8")  # 创建日志文件处理器
            # 创建格式器
            fmt = logging.Formatter(
                fmt='[%(asctime)s.%(msecs)03d] %(filename)s:%(lineno)d [%(levelname)s]: %(message)s',
                datefmt='%Y-%m-%d  %H:%M:%S')

            sh_fmt = colorlog.ColoredFormatter(
                fmt='%(log_color)s[%(asctime)s.%(msecs)03d] %(filename)s:%(lineno)d [%(levelname)s]: %(message)s',
                datefmt='%Y-%m-%d  %H:%M:%S',
                log_colors=log_colors_config)
            # 给处理器添加格式
            sh.setFormatter(fmt=sh_fmt)
            fh.setFormatter(fmt=fmt)
            # 给日志器添加处理器,过滤器一般在工作中用的比较少,如果需要精确过滤,可以使用过滤器
            logger.addHandler(sh)
            logger.addHandler(fh)
        return logger  # 返回日志器


if __name__ == '__main__':
    logger = Logging().log(level='INFO')
    logger.debug("11111111111")
    logger.info("22222222")
    logger.warning("33333333")

控制台根据log级别打印不同的颜色,注意以下代码:

sh_fmt = colorlog.ColoredFormatter(
                fmt='%(log_color)s[%(asctime)s.%(msecs)03d] %(filename)s:%(lineno)d [%(levelname)s]: %(message)s',
                datefmt='%Y-%m-%d  %H:%M:%S',
                log_colors=log_colors_config)
# 给处理器添加格式
sh.setFormatter(fmt=sh_fmt)

三、运行结果

[2022-10-11  14:50:54.449] t1.py:53 [INFO]: 22222222
[2022-10-11  14:50:54.449] t1.py:54 [WARNING]: 33333333

设置的log级别是INFO, 结果没有显示Debug级别的log. 

四、补充知识

logging模块的日志级别

logging模块默认定义了以下几个日志等级。

日志等级(level)描述
DEBUG最详细的日志信息,典型应用场景是 问题诊断
INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息
在PyCharm中实现控制台输出日志分层级分颜色显示 在PyCharm中实现控制台输出日志分层级分颜色显示在软件开发中,日志记录是一种必不可少的方法。日志可以帮助开发人员进行调试和追踪问题。在PyCharm中,我们可以通过设置来使控制台输出的日志信息更加规范化、易读、易管理。其中,使用分层级和分颜色的方式来显示日志信息是一种常见的做法。本文将介绍如何在PyCharm中实现控制台输出日志分层级分颜色显示。 阅读详情

相关推荐

Python logging自定义字段输出及打印颜色

logging模块是Python的一个标准库模块,开发过程中,可以通过该模块,灵活的完成日志的记录。 logging模块提供了两种记录日志的方式: 1)使用logging提供的模块级别的函数(logging.basicConfig,logging.debug,logging.info…) 2)使用logging模块的组件(loggers,handlers,filters,formatters) 简单示例 import json import logging class JsonFilter(logging.Filter): #此处定义字段的默认值,如果打印信息时不设置对应字段,则为默

python的logging模块setLevel(LEVELS.get(‘default‘,logging.NOTSET))

LEVELS.get(‘default’, logging.NOTSET) 尝试从名为 LEVELS 的字典中获取键为 ‘default’ 的值,如果该键不存在,则返回 logging.NOTSET。例如,如果一个日志记录器的级别设置为logging.NOTSET,而它的父级日志记录器的级别设置为logging.INFO,那么这个日志记录器将把所有的日志事件传递给父级日志记录器,并且只有那些级别为logging.INFO或更高级别的日志事件才会被处理和输出。这行代码的作用是设置日志记录器的级别。

sinat_41395907的博客 1012

从零实现Unitree Go2的SLAM建图与导航:手把手集成slam_toolbox和nav2(附Rviz2可视化配置)

本文详细指导如何在Unitree Go2四足机器人上集成slam_toolbox和nav2,实现SLAM建图与导航功能。从ROS2环境配置、雷达数据处理到slam_toolbox参数优化,再到nav2路径规划与Rviz2可视化调试,提供完整解决方案。特别适合机器人开发者快速掌握ROS2导航栈在Unitree Go2上的应用实践。

weixin_33737134的博客 1232

python中打印日志

上述代码中我们打印了五种日志,但是输出结果只有三种,这是因为指定日志级别后,程序会记录大于或者等于指定级别的日志。error:错误级别,打印错误异常信息,该级别的错误可能导致程序无法运行。debug:调试级别,打印非常详细的日志信息,通常用于代码调试。info:信息级别,打印一般的日志信息,突出强调程序的运行过程。4、当指定日志级别后,程序会记录所有日志级别大于或者等于指定级别的东西。%(levelno)s 打印日志级别的数值。%(message)s 打印日志的信息。%(thread)d 打印线程ID。

m0_51619381的博客 4603

动态数据脱敏技术分析

在当前国内信息安全热潮中,数据脱敏作为数据安全的重要一环得到了业界的认可与重视。早在2012年,数据脱敏首次作为一个单独的魔力象限由Gartner发布,Gartner在2014年又提出了:按照数据使用场景,将数据脱敏分为静态数据脱敏(Static data masking-SDM )与动态数据脱敏(Dynamic data masking-DDM )。 可能有人望文生义,认为动态数据脱敏一定比静态数据脱敏高级。非也非也,静态or动态,取决于脱敏的使用场景,主要是以使用场景为由来选择合适的数据脱敏的模式。 本

美创科技的博客 4677

数学建模--十大经典常用算法

数学建模十大算法:灰色预测,蒙特卡洛,遗传算法,模拟退火法,组合算法,神经网络,动态规划,聚类算法,类比法,概率算法,Floyd算法

qq_51533426的博客 5647

python中logging模块显示不同颜色的日志

一、logging 基本使用 日志级别: NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL mylog2.py import logging def test(): logging.warning('12345') if __name__ == '__main__': test() #...

qq_36072270的博客 1万+

ABAP CDS SELECT, parameters 全面解析:把参数化视图玩明白(含可运行示例)

这篇技术博客介绍了ABAP CDS中参数化视图的用法与实践。文章从业务需求出发,解释了参数化视图的必要性,并详细说明了语法规则、参数类型匹配、视图内部参数引用等关键点。重点展示了在JOIN和ASSOCIATION中传递参数的写法,提供了航线分析的完整业务案例和可运行代码示例。文章还总结了视图实体与DDIC视图的差异、会话变量使用技巧等实践要点,特别强调了JOIN中必须显式传参的语法要求。通过真实场景演示,帮助开发者掌握参数化CDS的高效应用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 364

Python - 实现logging根据日志级别输出不同颜色

实现logging根据日志级别输出不同颜色

公众号|软件测试老吴 5507

泛微OA自定义post接口和路径(无侵入)

泛微OA自定义post接口和路径(无侵入)

技术分享 3872

手把手教你学Simulink——基于Simulink的蚁群算法路径规划仿真建模示例

路径规划是机器人导航系统中的核心任务之一,旨在为机器人找到一条安全且高效的路径,使其能够从起点到达目标点,同时避免与障碍物发生碰撞。在开始之前,需要定义工作环境(例如地图),包括起点、终点以及可能存在的障碍物位置。通过本指南,我们介绍了如何基于Simulink结合MATLAB实现蚁群算法的路径规划仿真建模。

MHD0815的博客 223

logging日志带颜色

在控制台打印时通常使用print函数,但是如果我们需要打印一些进度信息,这些信息通常包含统一的格式,使用print函数是不是比较繁琐,另外,当需要将信息写入文件,创建文件和写入信息,文件的管理和频繁的打开关闭是不是比较危险。对于python语言来说,一个logging模块就能解决上述问题。 ...

wangyhwyh753的博客 1万+

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025 (以YOLO26最新目标检测模型为基础,C3k2融合SEFN空间增强前馈网络模块改进Backbone)

2502_91881744的博客 239

Python日志:根据日志级别打印不同颜色的日志(runLog.py)

注意: 1:logging模块中 logger = logging.getLogger() logger的handler的错误级别必须大于等于logger本身的错误级别, handler的错误级别设置才能生效,否则, logger的错误级别覆盖其handler的错误级别 1 # -*-coding:UTF-8-*- import logging import os import time ...

YPFeime的博客 1821

uniapp - 实现安卓App打包上架应用商店详细教程,详解Hbuilder打包编译apk发布上传到应用市场全流程,提供uniApp云打包、离线打包app、原生本地打包,附带APP备案和安卓证书申请

uni-app,安卓,APP,应用商店,打包编译apk,上架到应用市场,如何打包app并发布到主流应用市场,发布为AndroidApp流程,应用备案,如何申请安卓证书,hbuilder发布安卓apk后怎么上传到各家软件商店,创建app证书,uniapp发行原生APP本地打包安卓APK,详细最全的步骤教程,项目打包成apk,云打包,安心打包,安卓app离线打包,一直审核不通过,被拒绝,不符合规范,上架发布失败,申请安卓证书和获取证书信息,uni-app打包发布安卓Android软件到各大应用商店,腾讯应用

🏆 前端领域优质创作者 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

logging 学习最终版-配置的不同级别日志打印的颜色

import logging #设置日志颜色的包 import colorlog ''' Loggers:记录器,提供应用程序代码能直接使用的接口; Handlers:处理器,将记录器产生的日志发送至目的地; Filters:过滤器,提供更好的粒度控制,决定哪些日志会被输出; Formatters:格式化器,设置日志内容的组成结构和消息字段。 %(name)s Logger的名字 #也就是其中的.getLogger里的路径,或者我们用他的文件名看我们填什么

亚索的博客 2万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python接口自动化实现--基于logging库的日志打印

python日志文件输出

nidemingzi_cz的博客 644

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python3 logging模块控制台输出日志不同严重层级显示不同颜色

主要使用到colorama这个库,以下为代码,相关注释也写在代码里了修改Fore.WHITE即可修改相应的颜色。 如果有不知道怎么使用logging模块的,请看我的上一篇博客,传送门:https://blog.youkuaiyun.com/xugexuge/article/details/86169406 import logging import os.path import time from co...

xugexuge的博客 6073

python打印不同颜色日志logging

python,用于日志打印,区分日志颜色,写入日志文件。

beishida123的博客 2035

python logging 默认输出到屏幕_【Python】logging 和print 混用,输出到屏幕为什么会乱序?...

函数说明logging.debug(msg,*args,**kwargs)创建一条严重级别为DEBUG的日志记录logging.info(msg,*args,**kwargs)创建一条严重级别为INFO的日志记录logging.warning(msg,*args,**kwargs)创建一条严重级别为WARNING的日志记录logging.error(msg,*args,**kwargs)创建一条严...

weixin_39644139的博客 604

logging模块:打印日志

logging模块是python内置模块之一,用于打印日志信息

zhjadsf的博客 939

python3 logging模块基本使用方法,解决重复打印及输出中文乱码的问题

1、logging模块使用方法 logger提供了应用程序可以直接使用的接口; handler将(logger创建的)日志记录发送到合适的目的输出; filter提供了细度设备来决定输出哪条日志记录; formatter决定日志记录的最终输出格式。 import logging logger = logging.getLogger("test") # 定义对应的程序模块名name...

xugexuge的博客 3011

logging模块

需要注意的是当给logger与handler同时设置等级时,要看设置具体等级而定,例如当logger设置等级为DEBUG时,handler设置等级为INFO时,这时输出的日志为INFO及以上日志信息,因为Logger是第一个根据级别过滤消息的工具,然后再是Handler过滤;当logger设置等级为INFO时,Handler设置等级为DEBUG时,同样输出的日志为INFO及以上日志信息。Handler对象:接收logger传来的日志,然后控制输出,即输出的渠道。Formatter对象:设置日志的格式。

weixin_45440796的博客 535

python 日志处理 logging模块 ERROR以上等级 日志单独保存 不同级别日志写入不同日志文件

通常在运行代码时,我们往往需要使用logging模块记录代码在运行过程中的一些信息作为日志,方便在代码运行完成后进行判断和检查。但是如果将所有级别(https://blog.youkuaiyun.com/Ximerr/article/details/114675297)的日志都写在一个文件中,往往会使得日志文件大小庞大,及时使用日志分割(https://blog.youkuaiyun.com/Ximerr/article/details/114677671)也会因为无法区分正常级别日志和错误级别日志从而给调试代码、定问问题带来麻烦

Ximerr的博客 4498

Python使用yaml配置logging日志

前言 在Python环境下,logging是一个很好的用于处理日志的扩展包。平时使用时一般直接import logging后,调用logging.debug(“info”)方法打印日志。一般情况下够用,但是在需要涉及到复杂的日志功能(例如分级、写文件、归档等)后,则需要深入地对logging进行配置。通常情况下会使用yaml配置。 实践 创建一个loggingconfigyaml.yaml文件,内容如下: version: 1 disable_existing_loggers: False format

TracelessLe的专栏 4630
上一篇: Python aircv的使用
下一篇: Python中的dir, inspect列出类或者模块中的内容
ttkxspring
博客等级 码龄16年 5粉丝 24原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值