Moder New
Moder New

Reputation: 558

How to disable discord.py logger?

So I've tried to add some logger to my discord bot, to see logs in file not just in console, cause obviously it's irritating when I reset app and find out that I have to check logs that I've already destroyed, I set it up like this:

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

And learned the hard way that discord.py library has its own logger installed so now my logs look like one big mess, is there any way to disable discord.py's logging, or at least output it to another file?

EDIT: I've tried creating two loggers, so it would look like this:

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)

So the discord log, would be logged as the basic config says to discord.log file and, when executed like this:

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

would log into CoronaLog.log file, although it didn't really change anything

Upvotes: 4

Views: 4156

Answers (2)

LUKISO2
LUKISO2

Reputation: 80

discord.py is in this regard terribly unintuitive for everyone but beginners, anyway after confronting the docs you can find out that this behavior can be avoided with:

import discord

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

# Your regular code here

client.run(__YOURTOKEN__, log_handler=None)

Of course, you can supplement your own logger instead of None but to answer your question exactly, this is how you can disable discord.py's logging.

There's actually a bit more that you can do with the default logging, and you can read all about it on the official docs

Upvotes: 6

Turret
Turret

Reputation: 133

https://discordpy.readthedocs.io/en/latest/logging.html says: "discord.py logs errors and debug information via the logging python module. It is strongly recommended that the logging module is configured, as no errors or warnings will be output if it is not set up. Configuration of the logging module can be as simple as:

import logging

logging.basicConfig(level=logging.INFO)

Placed at the start of the application. This will output the logs from discord as well as other libraries that use the logging module directly to the console." Maybe try configuring logging a different way? Because when starting logging, it appears to initialize discord.py's llogging. maybe try

import logging
# Setup logging...
import discord

Maybe if you import it afterwords, it won't set it up.

Upvotes: 1

Related Questions