首页 > 其他分享 >coloredlogs用法

coloredlogs用法

时间:2023-11-11 20:34:39浏览次数:34  
标签:15 level 45 用法 coloredlogs message COLOREDLOGS

用法

下面是一个示例,说明入门是多么容易:

import coloredlogs, logging

# 创建一个记录器对象。
logger = logging.getLogger(__name__)

# 默认情况下,install()函数会在根记录器上安装一个处理程序,
# 这意味着从代码中记录消息,您使用的库都将显示在终端上。
coloredlogs.install(level='DEBUG')

# 如果您不想看到库中的日志消息,可以通过
#install()函数的特定记录器对象。在这种情况下,只记录来自该记录器的消息将显示在终端上。
coloredlogs.install(level='DEBUG', logger=logger)

# 一些例子。
logger.debug("this is a debugging message")
logger.info("this is an informational message")
logger.warning("this is a warning message")
logger.error("this is an error message")
logger.critical("this is a critical message")

日志消息的格式

ColoredFormatter 类支持用户定义的日志格式,因此您可以使用 您喜欢的任何日志格式。默认日志格式如下:

%(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s

此日志格式将产生以下输出:

2015-10-23 03:32:22 peter-macbook coloredlogs.demo[30462] DEBUG message with level 'debug'
2015-10-23 03:32:23 peter-macbook coloredlogs.demo[30462] VERBOSE message with level 'verbose'
2015-10-23 03:32:24 peter-macbook coloredlogs.demo[30462] INFO message with level 'info'
...

实现毫秒级精度

如果您从 logging.basicConfig() 切换到 coloredlogs.install(),您可能会注意到时间戳不再包含毫秒。这是因为 coloredlogs 不会在时间戳中输出毫秒,除非您明确指出 告诉它。有三种方法可以做到这一点:

  1. 简单的方法是将毫秒参数传递给 coloredlogs.install():

    coloredlogs.install(milliseconds=True)

    这在版本 7.1 中得到了支持(由于 #16)。

  2. 或者,您可以更改日志格式以包含“msecs”

    %(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s

    以下是对 coloredlogs.install() 的调用如下所示:

    coloredlogs.install(fmt='%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s')

    通过自定义日志格式,您还可以更改分隔符 将秒与毫秒(上面的逗号)分开。这成为可能 在版本 3.0 中,增加了对用户定义的日志格式的支持。

  3. 如果 的使用不够灵活,您可以改为添加到日期/时间格式中,它将替换为 的值。 版本 9.3 中添加了对该指令的支持(由于 #45)。%(msecs)d%f%(msecs)03d%f

自定义日志记录字段

支持以下自定义日志格式字段:

  • %(hostname)s提供本地系统的主机名。
  • %(programname)s提供当前正在运行的程序的名称。
  • %(username)s提供当前登录用户的用户名。

当 coloredlogs.install() 检测到这些字段中的任何一个被用于 将 string 格式化为适用的日志记录。自动过滤子类 已注册以填充相关的日志记录字段。

环境变量
以下环境变量可用于配置coloredlogs模块,而无需编写任何代码:

环境变量 默认值 值的类型
$COLOREDLOGS_AUTO_INSTALL ‘false’ a boolean that controls whether auto_install() is called
$COLOREDLOGS_LOG_LEVEL ‘INFO’ a log level name
$COLOREDLOGS_LOG_FORMAT DEFAULT_LOG_FORMAT a log format string
$COLOREDLOGS_DATE_FORMAT DEFAULT_DATE_FORMAT a date/time format string
$COLOREDLOGS_LEVEL_STYLES DEFAULT_LEVEL_STYLES see parse_encoded_styles()
$COLOREDLOGS_FIELD_STYLES DEFAULT_FIELD_STYLES see parse_encoded_styles()

如果设置了环境变量$NO_COLOR(该值无关紧要,即使是空字符串也可以),那么coloredlogs.install()将以此作为不应使用颜色的提示(除非调用方传递了覆盖).isatty=True

关于默认值

下面是默认配置的屏幕截图,以便于 与 以下自定义项的屏幕截图(这是与 如介绍所示):

Screen shot of colored logging with defaults.

上面的屏幕截图是从不支持微弱文本的屏幕截图中截取的 颜色,否则用于调试消息的绿色将具有 与用于垃圾邮件的绿色略有不同。urxvt

除了垃圾邮件级别的微弱风格外,coloredlogs 的默认配置还坚持使用原始 ANSI 定义的八调色板 标准,以便跨终端提供某种程度一致的体验 和终端仿真器。

可用的文本样式和颜色

当然,您可以自由自定义默认配置,在这种情况下,您可以 可以使用终端支持的任何文本样式或颜色。 您可以使用该命令来尝试支持的文本 样式和颜色:humanfriendly --demo

Screen shot of the 'humanfriendly --demo' command.

更改日志格式

最简单的自定义是更改日志格式,例如:

$ export COLOREDLOGS_LOG_FORMAT='[%(hostname)s] %(asctime)s %(message)s'
$ coloredlogs --demo
[peter-mbp] 2018-01-14 15:45:44 message with level spam (5)
[peter-mbp] 2018-01-14 15:45:45 message with level debug (10)
[peter-mbp] 2018-01-14 15:45:46 message with level verbose (15)
[peter-mbp] 2018-01-14 15:45:47 message with level info (20)
[peter-mbp] 2018-01-14 15:45:48 message with level notice (25)
[peter-mbp] 2018-01-14 15:45:49 message with level warning (30)
[peter-mbp] 2018-01-14 15:45:50 message with level success (35)
[peter-mbp] 2018-01-14 15:45:51 message with level error (40)
[peter-mbp] 2018-01-14 15:45:52 message with level critical (50)

这是在终端中的样子(我总是在终端中使用 黑色背景和白色文本):

Screen shot of colored logging with custom log format.

更改日期/时间格式

您还可以更改日期/时间格式,例如,您可以删除日期 只留下时间:

$ export COLOREDLOGS_LOG_FORMAT='%(asctime)s - %(message)s'
$ export COLOREDLOGS_DATE_FORMAT='%H:%M:%S'
$ coloredlogs --demo
15:45:34 - message with level spam (5)
15:45:35 - message with level debug (10)
15:45:36 - message with level verbose (15)
15:45:37 - message with level info (20)
15:45:38 - message with level notice (25)
15:45:39 - message with level warning (30)
15:45:40 - message with level success (35)
15:45:41 - message with level error (40)
15:45:42 - message with level critical (50)

下面是它在终端中的样子:

Screen shot of colored logging with custom date/time format.

更改颜色/样式

最后,您可以自定义使用的颜色和文本样式:

$ export COLOREDLOGS_LOG_FORMAT='%(asctime)s - %(message)s'
$ export COLOREDLOGS_DATE_FORMAT='%H:%M:%S'
$ export COLOREDLOGS_FIELD_STYLES='' # no styles
$ export COLOREDLOGS_LEVEL_STYLES='spam=22;debug=28;verbose=34;notice=220;warning=202;success=118,bold;error=124;critical=background=red'
$ coloredlogs --demo
15:45:23 - message with level spam (5)
15:45:24 - message with level debug (10)
15:45:25 - message with level verbose (15)
15:45:26 - message with level info (20)
15:45:27 - message with level notice (25)
15:45:28 - message with level warning (30)
15:45:29 - message with level success (35)
15:45:30 - message with level error (40)
15:45:31 - message with level critical (50)

以下是此处使用的功能的说明:

  • 中使用的数字演示了 256 的用法 颜色模式(数字是指固定的 256 种颜色模式调色板)。$COLOREDLOGS_LEVEL_STYLES
  • 成功级别演示了文本样式(粗体)的使用。
  • 临界级别演示了背景色(红色)的使用。

当然,在上面引用的 shell 成绩单中看不到这些,但是 请看以下屏幕截图:

Screen shot of colored logging with custom colors.

标签:15,level,45,用法,coloredlogs,message,COLOREDLOGS
From: https://www.cnblogs.com/full-stack-linux-new/p/17826304.html

相关文章

  • Timer是jdk中提供的一个定时器工具,TImer用法
    说到任务调度,大家可能会想到Quartz框架,但是jdk自带的简单任务调度工具类,反而了解的人并不是很多。我觉得如果你的业务相对简单的话,没必要非得用Quartz等框架,使用Timer完全可以胜任的。简单来分享一下我了解的Timer。Timer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起......
  • 微信小程序中的数组有许多常用的方法和用法
    声明和初始化一个数组:vararray=[];//声明一个空数组vararray=[1,2,3];//声明并初始化一个有元素的数组获取数组长度:varlength=array.length;//获取数组的长度访问和修改数组元素:varelement=array[index];//获取指定索引位......
  • docker 移植标准用法(移植到没有网络的环境)
    制作自定义镜像dockerps#查看镜像dockerexec-itidbash#进入容器进行自动修改操作,安装软件通过容器提交制作镜像##-a是作者,-m是提交的记录信息$dockercommit-a"OxyeMa"-m"myOnlyoffice"容器id仓库名:tag保存新镜像,用于后续移植$dockersave-oMyOnl......
  • man命令总结linux常用基本命令用法以及查看帮助文档的方法
       Linux中的常见命令1查看系统相关信息命令(1)查看内核版本uname-r(2)显示操作系统发行版本cat/etc/os-release(3)查看当前主机名hostname2查看硬件信息(1)查看CPUlscpucat/proc/cpuinfo(2)查看内存大小free-hcat/proc/meminfo(3)查看硬盘分区情况lsblkcat/proc/partiti......
  • Spring 6.0官方文档示例(24): replace-method的用法
    一、原始bean定义packagecn.edu.tju.study.service.anno.domain;publicclassMyValueCalculator{publicStringcomputeValue(Stringinput){return"youinputted:"+input;}//someothermethods...}二、replacebean定义packagecn.edu.......
  • spring复习:(57)PropertyOverrideConfigurer用法及工作原理
    一、属性配置文件dataSource.url=jdbc:mysql://xxx.xxx.xxx.xxx/testdataSource.username=rootdataSource.password=xxxxxxdataSource.driverClassName=com.mysql.jdbc.Driver#dataSource.type=com.alibaba.druid.pool.DruidDataSource二、spring配置文件<?xmlversion="1.0&quo......
  • shell 命令的一些基本用法
    0背景在使用shell的时候,总是有些不习惯,记录一下常用的用法吧。一、符号1.1引号 Shell中有三种引号,分别为双引号("")、单引号('')以及反引号(``)含义:双引号(""):在双引号中,除了$,'',`和\以外所有的字符都解释成字符本身。单引号(''):在单引号中所有的字符包括特殊字符($,'',......
  • C# LINQ的介绍与常用用法
    什么是LINQ?LINQ(LanguageIntegratedQuery)是一种C#语言中的查询技术,它允许我们在代码中使用类似SQL的查询语句来操作各种数据源。这些数据源可以是集合、数组、数据库、XML文档等等。LINQ提供了一种统一的编程模型,使我们能够使用相同的方式来查询和操作不同类型的数据。LINQ的基......
  • 11月9月字体的属性2以及div模块的另一种用法
    目录字体的属性2文字对齐文字的装饰首行缩进文字的距离设置块级标签的另一个作用字体的属性2文字对齐、文字装饰、首行缩进、文字之间的距离文字对齐需要用到属性text-align,该属性是用于规定元素中的文本水平对齐方式。然后就是text-align的属性值:值描述left左边......
  • Spring mvc中@RequestMapping 6个基本用法小结
    小结下springmvc中的@RequestMapping的用法。 1)最基本的,方法级别上应用,例如:    Java代码  @RequestMapping(value="/departments")public"simplePatternmethodwascalled");return"someResult";}  则访问http://loc......