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

基于CRU和WorldClim的高分辨率(1km)气候数据生成

基于CRU和WorldClim的高分辨率(1km)气候数据生成

lhq7842955的博客 1694

python中打印日志

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

m0_51619381的博客 4603

sylar学习系列一

开发环境 Centos7最小系统 gcc 9.1 cmake 环境可能存在的一些问题 可能存在的问题,linux最小系统没有一些常用命令,如果我们处于外网我们可以yum安装,但却遇到以下问题 can not find a valid baseurl for repo: base/7/x86-64 可修改网络配置 vi /etc/sysconfig/network-scripts/ifcfg-ens123 # 不是每个主机都是ens123 把ONBOOT=no,改为ONBOOT=yes 重启网络

wuguinianjing的博客 1018

SDFCOM_SWC警告深度剖析:从assign短路到时序标注失效的链路追踪

本文深入剖析了SDFCOM_SWC警告的根源,从assign短路到时序标注失效的全链路追踪。通过分析RTL设计中的assign语句陷阱、综合阶段的优化变形以及PrimeTime生成SDF文件的视角,提出了重构RTL设计、警告抑制和SDF生成优化等解决方案,帮助工程师有效避免时序标注问题。

weixin_42519985的博客 365

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万+

【ART-Pi与RT-Thread入门】①ART-Pi上手初体验

文章目录关于ART-Pi实物照片板载资源、扩展接口及驱动支持扩展引脚默认固件蓝牙配网微信扫描二维码设备选择 ART-Pi,输入所要连接的 WIFI SSID 和密码配网成功会显示IP地址打开IP地址Finsh控制台配网WindowsmacOS 关于ART-Pi ART-Pi是 RT-Thread 团队为嵌入式软件工程师、开源创客设计的一款极具扩展功能的 DIY 开源硬件。致力打造一个开源的软硬件平台。 实物照片 板载资源、扩展接口及驱动支持 扩展引脚 其中P1排扩展引脚座兼容树莓派的扩展接口,并

SimonLiu的博客 5831

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

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

公众号|软件测试老吴 5507

稚晖君Dummy机械臂CAN总线控制详解:从代码到实战(附常见问题排查)

本文深入解析了稚晖君Dummy机械臂的CAN总线控制技术,从协议设计到代码实现,详细介绍了CAN总线在机械臂控制中的核心价值、通信协议栈设计、运动控制指令实现及常见问题排查方法。通过实战案例和代码示例,帮助开发者快速掌握机械臂CAN总线控制的关键技术。

uuu88的博客 295

YOLOv5基于深度学习的道路缺陷检测系统

然而,由于长期的自然侵蚀、车辆磨损等因素,道路表面容易出现裂缝、坑洼等缺陷。这些缺陷不仅会影响驾驶舒适性,还可能引发交通事故,尤其是在恶劣天气或夜间行车条件下。随着人工智能技术的快速发展,基于深度学习的道路缺陷检测技术能够在降低人力成本的同时提高检测效率,为道路维护提供了新的解决方案。本项目构建了基于YOLOv5的道路缺陷检测系统,结合PyQt5开发了用户友好的UI界面,具备实时检测和图片分析功能。工具对图片进行标注,生成YOLO格式的标注文件。上传包含道路裂缝或坑洼的图片,系统会标注出缺陷的位置及类别。

YOLO 1076

logging日志带颜色

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

wangyhwyh753的博客 1万+

第10篇:Agent + 爬虫 = 全自动数据采集专家

在企业级数据采集场景中,传统爬虫的痛点已经到了无法忽视的地步:而Agent + 爬虫的组合,就是这些痛点的终极解决方案。它的核心逻辑是:把爬虫从「人工写死的固定执行脚本」,升级为「能自主分析、自主决策、自主适配、自主修复的智能采集机器人」。我们在生产环境中做过对比测试:传统爬虫开发10个网站的采集脚本需要3人天,而Agent采集机器人只需要3分钟,页面改版后的修复成本从1人天降到了0,采集任务的成功率从62%提升到了95%以上。终端执行以下命令,安装基础依赖,与前9篇环境完全兼容: 二、核心能力拆解:Age

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1577

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

工业质检升级!C#上位机集成YOLOv8.3.138+Blob分析:尺寸测量+缺陷检测一步到位

工业场景的技术选型,从来不是“选最先进的”,而是“选最适配的”。这个项目的成功,不在于采用了多前沿的技术,而在于找对了“贴合场景的技术组合”和“落地导向的实施思路”。C#上位机的稳定性保障了系统长期运行,YOLOv8.3.138的精度解决了缺陷检测痛点,Blob分析的抗干扰能力确保了尺寸测量准确,三者结合实现了“1+1+1>3”的效果。先摸透场景,再选技术:不要盲目追求最新模型,先深入了解车间环境、生产节奏、精度要求,选择兼容性强、稳定性高的技术方案;数据质量决定模型性能。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 611

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

亚索的博客 2万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

python日志文件输出

nidemingzi_cz的博客 644

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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、付费专栏及课程。

余额充值