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

如何获取终端打印的所有信息含错误并写入文件用于Discord bot错误监控

Discord Bot全量终端输出与错误日志落地方案

方案1:启动时直接重定向输出(无需改代码,最快实现)

直接在启动bot的命令后加输出重定向规则即可,Linux系统下示例命令:
python3 bot.py >> bot_run_$(date +%Y%m%d).log 2>&1 &
参数说明:

  • >> bot_run_$(date +%Y%m%d).log:以追加模式把输出写入按当天日期命名的日志文件,不会覆盖历史日志
  • 2>&1:将标准错误流(所有报错信息)合并到标准输出流,一起写入日志文件
  • 末尾的&:让bot在后台运行,关闭终端也不会停止

方案2:代码内置日志模块(更灵活,适配已有错误处理器)

如果需要更精细化的日志控制,比如自动分割日志、保留错误堆栈、同时输出到终端和文件,可以直接在代码中引入日志模块,以下是Python实现示例:

  1. 导入依赖并配置全局日志
import logging
import sys
from logging.handlers import RotatingFileHandler

# 初始化日志实例
bot_logger = logging.getLogger("discord_bot")
bot_logger.setLevel(logging.DEBUG)

# 定义日志格式:时间 + 日志级别 + 内容
log_format = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")

# 配置文件写入handler:单日志文件最大10MB,最多保留5份历史日志,自动滚动清理
file_handler = RotatingFileHandler(
    "bot_full.log",
    maxBytes=10 * 1024 * 1024,
    backupCount=5,
    encoding="utf-8"
)
file_handler.setFormatter(log_format)
bot_logger.addHandler(file_handler)

# 可选:保留终端输出能力
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(log_format)
bot_logger.addHandler(console_handler)
  1. 适配现有专属错误处理器
    在你已经写好的命令错误处理逻辑中,用logger.error方法输出错误即可自动写入日志,开启exc_info=True会自动记录完整错误堆栈,方便排查宕机原因:
@bot.event
async def on_command_error(ctx, error):
    # 原有错误处理逻辑
    bot_logger.error(f"命令执行出错:命令名={ctx.command}, 触发用户={ctx.author.id}, 错误内容={str(error)}", exc_info=True)

注意事项

  • 如果使用PM2等进程管理工具启动bot,可以直接在进程配置中指定日志存储路径,自带日志分割、进程异常自动重启能力,更适合VPS生产环境使用
  • 可配置定时任务扫描日志文件中的ERROR级别内容,发现新错误主动推送通知,无需手动排查
  • 建议开启日志自动滚动清理,避免日志文件占满VPS磁盘空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:09:05