在 Python 的日志配置中,可以通过设置不同 logger 的级别来控制日志的输出。你可以为你的项目设置一个特定的 logger,并为其设置 INFO 级别,同时将其他 logger 的级别设置为 WARNING 或更高,这样工具库的 DEBUG 或 INFO 级别的日志就不会被输出。
下面是一个简单的例子,演示如何配置日志,只输出你的项目的 INFO 级别日志:
import logging
# 配置根日志
logging.basicConfig(level=logging.DEBUG)
# 获取项目的 logger
logger = logging.getLogger("your_project_logger")
logger.setLevel(logging.INFO) # 设置项目的 logger 为 INFO 级别
# 配置控制台处理程序,用于输出日志
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO) # 控制台输出 INFO 级别及以上的日志
# 配置日志格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
# 将处理程序添加到项目的 logger
logger.addHandler(console_handler)
# 以下是工具库的代码,你不需要修改它
# ...
# ...
# 记录 INFO 级别的日志
logger.info("This is an INFO log from your project.")
在上述代码中,你可以根据自己项目的实际情况设置 logger
的名字(这里是 "your_project_logger")。将你的项目的 logger 设置为 INFO 级别,同时设置控制台处理程序的级别为 INFO,这样只有 INFO 级别及以上的日志会被输出到控制台。
请替换 "your_project_logger" 为你实际项目的 logger 名字。如果你的工具库使用了不同的 logger,你可以设置相应的 logger 名字并调整级别。
LOGGING_CONFIG = { 'version': 1, 'formatters': { 'detailed': { 'class': 'logging.Formatter', 'format': '%(asctime)s [%(levelname)s] %(name)s.%(funcName)s:%(lineno)d - %(message)s', }, }, 'handlers': { 'console': { 'class': 'logging.StreamHandler', 'level': 'INFO', 'formatter': 'detailed', }, }, 'root': { 'handlers': ['console'], 'level': 'INFO', }, } 过滤所有工具库的日志
如果你想过滤掉所有工具库的日志,只输出自己项目的日志,可以通过以下步骤进行设置:
-
为你的项目创建一个专用的 logger。 在你的代码中,使用专门的 logger,不要使用根 logger。
-
配置 logger 的处理程序和级别。 在你的项目中,为专用 logger 添加控制台处理程序,并设置适当的日志级别。
下面是一个示例配置:
import logging
from logging.config import dictConfig
# 配置日志
LOGGING_CONFIG = {
'version': 1,
'formatters': {
'detailed': {
'class': 'logging.Formatter',
'format': '%(asctime)s [%(levelname)s] %(name)s.%(funcName)s:%(lineno)d - %(message)s',
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': 'INFO',
'formatter': 'detailed',
},
},
'loggers': {
'your_project_logger': { # 替换为你的项目名
'handlers': ['console'],
'level': 'INFO',
},
},
}
dictConfig(LOGGING_CONFIG)
# 获取专用 logger
logger = logging.getLogger('your_project_logger') # 替换为你的项目名
# 以下是你的项目代码
# ...
# ...
# 以下是工具库的代码,不需要修改
# ...
# ...
# 记录 INFO 级别的日志
logger.info("This is an INFO log from your project.")
在这个例子中,你需要将 'your_project_logger'
替换为你的项目的 logger 名称。然后,通过 dictConfig
函数应用日志配置。这样,只有你的项目的日志会被输出到控制台,而其他的工具库的日志不会显示。
确保你的项目中的其他地方也使用 'your_project_logger'
,以便它们都记录到同一个 logger 中。