鱼C论坛

 找回密码
 立即注册
查看: 2075|回复: 6

python中的logging.basicConfig问题

[复制链接]
发表于 2023-7-6 10:43:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下代码:
微信截图_20230706104040.jpg

中的
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s: %(message)s')

这段代码是什么意思呢?
各位大佬能否用这个logging.basicConfig举一个简单的例子解释说明一下有什么用呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-6 10:43:40 | 显示全部楼层
logging.basicConfig 是 Python 中内置的用于配置日志记录的函数。该函数用于设置默认的日志行为,包括日志级别、格式等。

其中,参数的含义如下:
- level:指定日志的级别,可以是 logging.DEBUGlogging.INFOlogging.WARNINGlogging.ERRORlogging.CRITICAL 之一。通过设置不同的级别,可以控制日志的输出程度。例如,如果将级别设置为 logging.INFO,则只会输出 INFO 级别及以上的日志信息,低于 INFO 级别的日志将被忽略。
- format:指定日志的格式,可以自定义,使用特定的占位符来表示不同的日志信息,如时间、级别和消息内容等。常用的占位符有:
  - %(asctime)s:日志记录的时间
  - %(levelname)s:日志的级别
  - %(message)s:日志的具体消息内容

下面是一个简单的示例,以说明如何使用 logging.basicConfig
pythonimport logging# 配置日志记录的基本参数logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')# 在代码中记录日志logging.debug('这是一个调试消息')logging.info('这是一个信息消息')logging.warning('这是一个警告消息')logging.error('这是一个错误消息')
运行上述代码,会按照设置的格式将不同级别的日志信息输出到控制台。在这个示例中,我们将日志级别设置为 logging.INFO,所以只有 INFO 级别及以上的日志信息会被输出。

希望这个例子能够帮助您理解 logging.basicConfig 的使用。如果还有其他疑问,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-6 10:48:02 | 显示全部楼层
陶远航 发表于 2023-7-6 10:43
logging.basicConfig 是 Python 中内置的用于配置日志记录的函数。该函数用于设置默认的日志行为,包括日志 ...

format是否是在python2.6之前的版本能用呢?然后2.6之后用的是f字符串呢?还是那个format不同于这个format呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-6 10:51:47 | 显示全部楼层
python小小白哟 发表于 2023-7-6 10:48
format是否是在python2.6之前的版本能用呢?然后2.6之后用的是f字符串呢?还是那个format不同于这个forma ...

在Python 2.6及之前的版本,确实可以使用format方法进行字符串格式化。这种方法使用花括号 {} 作为占位符,例如:
name = "Alice"
age = 25
message = "My name is {} and I'm {} years old.".format(name, age)
print(message)
输出结果为:
My name is Alice and I'm 25 years old.
在Python 2.6之后,引入了新的字符串格式化语法,称为f-strings。使用f-strings,你可以在字符串中直接使用变量,并通过在变量名前加上 f 前缀来引用它们。例如:
name = "Alice"
age = 25
message = f"My name is {name} and I'm {age} years old."
print(message)
输出结果与上述示例相同:
My name is Alice and I'm 25 years old.
可以看到,f-strings 更加简洁和直观,并且在表达式中可以执行更多的操作。因此,从 Python 2.6 开始,推荐使用 f-strings 进行字符串格式化。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-6 10:53:37 | 显示全部楼层
logging.basicConfig(**kwargs)  是 Python  logging  模块的一个函数,它可以用来对 Python 的 logging 模块进行一次性配置。这个函数只有在第一次调用的时候会起作用,后续再次调用是没有效果的。主要用于简单的程序和脚本,复杂的系统一般会使用更复杂的配置方式。

在你给出的这段代码中,  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')  这一行代码的意思是:

·  level=logging.INFO :设置日志的输出级别为 INFO。日志级别从低到高为:DEBUG, INFO, WARNING, ERROR, CRITICAL。设置为 INFO 表示输出 INFO 级别和它以上的日志信息。

·  format='%(asctime)s - %(levelname)s: %(message)s' :设置输出的日志格式。其中, %(asctime)s  表示日志的时间, %(levelname)s  表示日志的级别(如 INFO,ERROR 等), %(message)s  表示日志的信息内容。


这是一个简单的使用  logging.basicConfig  的例子:
import logging

# 使用 basicConfig 配置 logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')

# 使用日志
logging.debug('这是 debug 级别的日志,通常用于调试')
logging.info('这是 info 级别的日志,通常用于记录运行信息')
logging.warning('这是 warning 级别的日志,通常用于记录警告')
logging.error('这是 error 级别的日志,通常用于记录错误')
logging.critical('这是 critical 级别的日志,通常用于记录严重错误')

在这个例子中,由于我们设置的日志级别为 INFO,所以只会输出 INFO,WARNING,ERROR,CRITICAL 级别的日志,DEBUG 级别的日志不会输出。

Python 的  logging  模块是一个强大而灵活的日志记录系统,能够满足各种各样的日志记录需求。可以参考官方文档以获取更多信息:https://docs.python.org/3/library/logging.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-6 15:27:13 | 显示全部楼层
isdkz 发表于 2023-7-6 10:53
logging.basicConfig(**kwargs)  是 Python  logging  模块的一个函数,它可以用来对 Python 的 logging  ...

format='%(asctime)s - %(levelname)s: %(message)s'

这段代码能否详细讲解一下作用是什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-6 15:30:24 | 显示全部楼层
python小小白哟 发表于 2023-7-6 15:27
format='%(asctime)s - %(levelname)s: %(message)s'

这段代码能否详细讲解一下作用是什么呢?

当然可以。在  logging.basicConfig()  函数中, format  参数用于设置日志信息的输出格式。

format='%(asctime)s - %(levelname)s: %(message)s'  是一个格式化字符串,用于定义输出的日志信息的格式。这个字符串中的  %(name)s  是格式说明符,它会被日志信息的相应属性替换。在这个例子中,使用了以下三个格式说明符:

·  %(asctime)s :这将会被日志事件发生的时间替换。默认的时间格式是  2003-07-08 16:49:45,896  (表示的是年、月、日、小时、分钟、秒和毫秒)。如果你希望改变时间的格式,可以在  basicConfig  中使用  datefmt  参数,如: datefmt='%m/%d/%Y %I:%M:%S %p'  将会改变时间格式为 '07/08/2003 04:49:45 PM'。

·  %(levelname)s :这将会被日志的等级名称替换,如 'DEBUG','INFO','WARNING','ERROR','CRITICAL'。

·  %(message)s :这将会被日志的信息文本替换。这个信息通常是你调用日志函数时传入的信息,如  logging.info('这是一条info级别的日志')  中的 '这是一条info级别的日志'。

所以,如果你运行如下代码:
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')
logging.info('这是一条info级别的日志')

你将会看到如下的输出:
2023-07-06 16:20:10,123 - INFO: 这是一条info级别的日志

在这个输出中,'2023-07-06 16:20:10,123' 是日志事件发生的时间,'INFO' 是日志的等级,'这是一条info级别的日志' 是日志的信息。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 13:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表