首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 打印彩色日志

我相信每一个开发者都有打印日志的习惯,好看的日志可以加快调试的速度,可以更好的了解程序中发生的事情。本文分享一个技巧,可以让 Python 在控制台输出彩色的日志。...安装 coloredlogs pip install coloredlogs 使用 首先,和正常打印日志一样,我们创建一个 logger logging.basicConfig() logger =...white'), funcName=dict(color='white'), lineno=dict(color='white'), ) ) 接下来就和正常使用日志一样了...,配置一个流处理器,让日志显示在控制台: ch = logging.StreamHandler(stream=sys.stdout) ch.setFormatter(fmt=coloredFormatter...) logger.addHandler(hdlr=ch) logger.setLevel(level=logging.DEBUG) 接下来就可以输入日志信息了: logger.debug(msg="this

1.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

Python 使用 logging模块打印日志

log日志 Python中有个logging模块可以完成相关信息的记录,在debug时用它往往事半功倍。...logging.basicConfig函数中,可以指定日志的输出格式format,这个参数可以输出很多有用的信息,如下: %(levelno)s: 打印日志级别的数值 %(levelname)s: 打印日志级别名称...%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0] %(filename)s: 打印当前执行程序名 %(funcName)s: 打印日志的当前函数 %(lineno)d...: 打印日志的当前行号 %(asctime)s: 打印日志的时间 %(thread)d: 打印线程ID %(threadName)s: 打印线程名称 %(process)d: 打印进程ID %(message...)s' 这个格式可以输出日志打印时间,是哪个模块输出的,输出的日志级别是什么,以及输入的日志内容。

1.2K30

python 日志打印之logging使用介绍

测试环境: Python版本:Python 2.7 简单的将日志打印到屏幕 import logging logging.debug('this is a debug level message'...ERROR:root:this is error level message CRITICAL:root:this is critical level message >>> 默认情况下,logging将日志打印到屏幕...Logger的名字 %(levelno)s: 打印日志级别的数值 %(levelname)s: 打印日志级别名称 %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]...%(filename)s: 打印当前执行程序的文件名 %(funcName)s: 打印日志的当前函数 %(lineno)d: 打印日志的当前行号 %(asctime)s: 打印日志的时间...%(thread)d: 打印线程ID %(threadName)s: 打印线程名称 %(process)d: 打印进程ID %(message)s: 打印日志信息 将日志同时输出到文件和屏幕

1.3K30

如何打印日志

如何打印日志 日志打印对研发来说,是很有必要的, 如何打印日志,让日志能反映出处理流程,让日志能反映出问题所在,这个很重要,不好的日志,会加大研发排查问题的难度,过多的日志也会对研发造成干扰,如何打印日志...日志存在的问题 安全问题 将用户的敏感信息打印在了日志日志级别不合理 warning日志较为泛滥,且少有人关注 部分阻塞业务流程的错误,未正确使用error日志 错误日志重复打印 同一个错误在不同的位置重复打印...除外) 【建议】谨慎的使用日志进行打点 合理分级 【强制】日志打印时应选择合适的级别 保证安全 【强制】原则上禁止日志汇总禁止打印用户L4级别的日志 【强制】日志打印满足飞书日志打印安全规范 【建议】使用合适的脱敏方式对敏感信息进行脱敏...MQ消息的唯一标记MsgID 案例二:日志打印时未传入ctx导致日志缺乏logID,无法通过logID检索到该日志 案例三:在程序的关键分岔点未打印日志 案例四:在特殊的条件分岔未打印日志 【强制】关键日志必须打印路径...,打印日志必须带上关键信息 【强制】日志打印时必须携带logID

36120

聊聊日志打印日志审计

二.日志切面 ​ springboot中默认提供的日志打印功能无法打印函数的入参与出参信息。现在如果有个bug在生产环境可以复现,测试环境怎么也复现不了,本地代码又无法连接生产环境进行调试。...生产环境一般一般情况下指挥打印info级别的日志。这个时候就头疼了,无法定位解决问题。 ​ 因此线上环境能有一个功能帮我们打印函数的详细的入参或者出参这个功能是很重要的。...当然这个功能默认情况下还是不要开启,毕竟大多数线上环境的调用链封装比较深,出参与入参信息打印会比较多,对于日志的存储会是一个比较大的问题。...2.1.源码及说明 /** * 详细日志切面 * * 【默认情况下建议不要开启,开发测试定位问题的时候可以打开,打开就变成了硬盘的事儿都不叫事儿,爆炸打印】 * @author baiyan...>[] excludeReturnClass; //不进行日志打印的类 private static final Class<?

2.3K10

Ijkplayer打印FFMpeg日志

背景 在打印Ijkplayer播放日志的过程中,在ijkplayer中日志可以正常输出。...但是涉及到FFMpeg的日志,则无法输出 原因 由于FFMPeg中的libavutil/log.c中使用的是fprintf,所以输出到了标准输出中,而Android有自己的一套输出日志的端口。...需要使用av_log_set_callback将日志桥接到自定义的函数,然后通过该函数进行重输出。 方案 ....ff_player.c中的ffp_global_init通过av_log_set_callback注册好回调函数,然后即可通过该函数将ffmpeg库中的输出重定向到ijkplayer中 这步完成后,发现还是打印不出来日志...最后,一怒之下,把ijksdl_log.h中的日志打印都换成了android jni的日志打印,就打印出来了 #ifdef EXTRA_LOG_PRINT #define VLOG(level,

2.3K30

如何打印日志

1.选择恰当的日志级别 error warn info debug 2.日志打印出参入参数 方便甩锅 3.选择合适的日志格式 时间戳 线程名字 日志级别等 4.if-else ,switch 等分支语句都建议打印日志...,方便排查 5.对一些比较低的日志级别进行判断,使用log.isXXXX()方法判断 如果日志不被记录,但是日志内的字符拼接,对象的toString方法也会执行,浪费性能 6.不建议直接使用log4j...,logback等日志系统,建议使用slf4j框架,方便统一处理 7.建议使用参数占位符{},而不是+拼接,简洁且提升性能 8.建议使用异步日志,能有效提升IO性能 9.不要使用e.printStackTrace...()打印错误信息,因为太多信息,且是堆栈信息,会使得内存溢出 10.异常不要只打一半,要完成输出 11.禁止在线上开启debug 会把磁盘打满 12.不要记录了异常,又抛出异常 13.避免重复打印日志...,浪费磁盘空间 14.日志文件分离,不同级别日志存放在不同文件中 15.核心功能模块,建议打印详细的日志

6910

MySQL打印死锁日志

这种死锁异常一般要在特定时间特定数据和特定业务操作才会复现,有时候处理起来毫无头绪,一般只能从死锁日志下手。本篇文章我们一起来看下 MySQL 的死锁日志。...1.手动打印死锁日志 当业务发生死锁时,首先是线上错误日志报警发现死锁异常,也会提示一些堆栈信息,然后会反馈到数据库层面进行排查。...那有没有办法记录所有的死锁日志呢,我们来看下 MySQL 的系统参数。...不过这会导致错误日志暴增,一般不建议开启这两个参数。 总结: 本篇文章介绍了 MySQL 死锁日志的获取方法,发生死锁后,可以根据死锁日志还获取相关信息。...开启 innodb_print_all_deadlocks 参数可以自动将死锁信息输出到错误日志中,有助于我们及时发现并处理死锁异常。

1.3K10

Python 日志打印之logging.getLogger源码分析

#实践环境 WIN 10 Python 3.6.5 #函数说明 logging.getLogger(name=None) getLogger函数位于logging/__init__.py脚本 #源码分析...organized into a namespace hierarchy where levels are separated by periods, much like the Java or Python...然后在日志打印器字典中记录该名称和日志打印器的映射关系,接着调用 _fixupParents(创建的日志打印器实例)类实例方法--为日志打印器设置上级日志打印器,最后返回该日志打印器。...2)如果名称已存在日志打印器名称,则获取该日志打印器,然后判断日志打印器是否为PlaceHolder类实例,如果是,则创建一个名为所给参数值的日志打印器,同第1)点,该日志打印器,默认级别默认为NOTSET...,新建的日志打印器实例)--为新建日志打印器设置上级日志打印器,为PlaceHolder类实例现有下级PlaceHolder日志打印器实例重新设置上级日志打印器,最后返回该日志打印器。

55720

Python 日志打印之logging.config.dictConfig使用总结

日志打印之logging.config.dictConfig使用总结 By:授客 #实践环境 WIN 10 Python 3.6.5 #函数说明 logging.config.dictConfig(config...指定该日志记录器的propagation配置,为布尔值,即True 或 False,用于控制是否向上遍历父辈日志打印器,进而控制当前日志打印器是否共享父辈打印器的日志处理器。...属性是否为True,如果为True,则获取上级日志打印器,继续遍历其日志处理器,处理消息,否则不遍历上级 另外,查看hasHandlers函数可知,判断一个logger是否有日志处理器,也用到了propagate...,如果propagate为True,则遍历父级日志打印器,看其是否存在日志处理器,如果父级或者父辈日志打印器存在日志处理器,则判断该logger拥有日志处理器。...由此可见,propagate功能就是用于控制是否向上遍历父辈日志打印器,进而控制当前日志打印器是否共享父辈打印器的日志处理器。

3.6K30

日志打印的正确姿势!

使用slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。...实现方式统一使用: Logback框架 打日志的正确方式 什么时候应该打日志 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。...当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息的方式...: logger.debug("Processing trade with id:[{}] and symbol : [{}] ", id, symbol); 对于debug日志,必须判断是否为debug...Azure未响应 如果有Throwable信息,需要记录完成的堆栈信息: log.error("获取用户[{}]的用户信息时出错",userName,e); 说明 如果进行了抛出异常操作,请不要记录error日志

1.6K20
领券