You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.11.4日志级别配置:文件与Telegram日志分流问题咨询

Python日志级别分流配置修正方案

你的配置问题出在两处:

  1. 根日志器(logger)的级别设为了logging.WARNING,这会直接过滤掉INFO级别的日志,连文件处理器都接收不到这些日志
  2. tg_logger添加的Telegram处理器没有设置级别,会默认接收所有级别的日志,不符合你"仅WARNING及以上发Telegram"的需求

修正步骤:

  • 将根日志器的级别改为logging.INFO,确保INFO及以上的日志能进入处理器流程
  • 获取tg_logger添加的Telegram处理器,给它单独设置级别为logging.WARNING

修正后的完整代码:

import logging
import tg_logger
import os
from dotenv import load_dotenv
from pathlib import Path
from logging.handlers import RotatingFileHandler

dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
if os.path.exists(dotenv_path):
    load_dotenv(dotenv_path)
token = os.getenv("TELEGRAM_BOT_TOKEN")
users = [os.getenv("TELEGRAM_CHAT_ID")]
script_path = Path(__file__).resolve()
script_name = os.path.splitext(os.path.basename(script_path))[0]
log_dir = script_path.parent
log_file = Path(str(log_dir) + "/" + script_name + ".log")
logger = logging.getLogger(script_name)

# 先设置tg_logger
tg_logger.setup(logger, token=token, users=users, tg_format="<b><u>%(name)s</u> : %(levelname)s</b>\n\n<code>%(message)s</code>")
# 获取Telegram处理器并设置级别
for handler in logger.handlers:
    if isinstance(handler, tg_logger.TgHandler):
        handler.setLevel(logging.WARNING)
        break

# 设置文件处理器
file_handler = RotatingFileHandler(log_file, maxBytes=1024*1024, backupCount=10)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
logger.addHandler(file_handler)

# 把根日志器级别设为INFO,确保INFO及以上日志能被处理器接收
logger.setLevel(logging.INFO)

logger.info(f"Hello from tg_logger by {script_name}")
logger.warning(f"Test WARNING {script_name}")
#logger.error(f"Test ERROR {script_name}")

说明:

  • 根日志器级别设为INFO后,所有INFO、WARNING、ERROR级别的日志都会传递给各个处理器
  • Telegram处理器被设置为WARNING级别,只会处理WARNING及以上的日志,满足"同时输出到文件和Telegram"的需求
  • 文件处理器保持INFO级别,会处理所有INFO及以上的日志,包括仅需要输出到文件的INFO日志

内容的提问来源于stack exchange,提问作者8j0rn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:43:25