如何禁用 Discord.py 的日志记录器?

3

我尝试为我的Discord机器人添加一些日志记录器,以便不仅可以在控制台中查看日志,还能将其记录到文件中。显然当我重启应用程序时发现我必须查看已经销毁的日志,这非常让人烦恼。我像这样设置它:

logging.basicConfig(filename='CoronaLog.log', level=logging.DEBUG, format='%(levelname)s %(asctime)s %(message)s')

我曾经吃了亏,发现discord.py库有自己的日志记录器,所以我的日志看起来像一个大混乱,有没有办法禁用discord.py的日志记录,或者将其输出到另一个文件中?

编辑:我尝试创建两个日志记录器,代码如下:

logging.basicConfig(filename='discord.log', level=logging.DEBUG, format='%(levelname)s %(asctime)s %(message)s')

nonDiscordLog = logging.getLogger('discord')
handler = logging.FileHandler(filename='CoronaLog.log', encoding='utf-8', mode='w')
handler.setFormatter(logging.Formatter('%(levelname)s %(asctime)s:%(name)s: %(message)s'))
nonDiscordLog.addHandler(handler)

因此,Discord日志将按照基本配置中的设置被记录到discord.log文件中,并在执行以下命令时:

nonDiscordLog.info("execution took %s seconds \n" % (time.time() - startTime))

尽管它没有真正改变任何内容,但会登录到 CoronaLog.log 文件中。

2个回答

4

discord.py 在这方面对于除了初学者以外的人来说非常不直观,但是在查阅文档之后,您可以发现可以通过以下方法避免这种行为:

import discord

client = discord.Client(intents=discord.Intents.all())

# Your regular code here

client.run(__YOURTOKEN__, log_handler=None)

当然,你可以补充自己的记录器而不是`None`,但为了确切回答你的问题,这是如何禁用 `discord.py` 日志记录的方法。
实际上,您可以对默认日志记录做更多的事情,并且您可以在官方文档中阅读有关其全部内容。

1
只是为了明确,我知道你可能不是在寻找两年后的解决方案,因此这个答案主要是给未来遇到同样问题的人参考。 - LUKISO2

1

https://discordpy.readthedocs.io/en/latest/logging.html说: "discord.py使用logging python模块记录错误和调试信息。强烈建议配置logging模块,否则不会输出任何错误或警告信息。配置logging模块可以非常简单,如下:

import logging

logging.basicConfig(level=logging.INFO)

放置在应用程序开头。这将输出discord以及其他直接使用日志模块的库的日志到控制台。

也许可以尝试以不同的方式配置日志记录?因为在启动日志记录时,似乎会初始化discord.py的日志记录。也许可以尝试

import logging
# Setup logging...
import discord

也许如果您事后导入它,它就不会设置它。

效果在两种配置中都是相同的。 - Moder New

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接