バージョン 0.6.0 で追加.

ログの設定

discord.py は、エラーとデバッグ情報を logging Python モジュールを用いて出力します。このプロセスを容易にするため、ライブラリは Client.run() を使用したときに discord ロガーのデフォルト構成を提供します。設定されていないとエラーや警告は一切出力されないため、 logging モジュールを設定することを強く推奨します。

ライブラリが提供するデフォルトの logging 構成は色付きの出力を sys.stderr に出力します。 logging.FileHandler などのビルトイン logging.handlers を使用すると、ファイルに出力するようにできます。

これは、 Client.run() に渡してください:

import logging

handler = logging.FileHandler(filename='discord.log', encoding='utf-8', mode='w')

# Assume client refers to a discord.Client subclass...
client.run(token, log_handler=handler)

None を渡して、ライブラリの logging 構成を完全に無効化することもできます。

client.run(token, log_handler=None)

ログレベルを logging.DEBUG に設定することも可能です:

import logging

handler = logging.FileHandler(filename='discord.log', encoding='utf-8', mode='w')

# Assume client refers to a discord.Client subclass...
client.run(token, log_handler=handler, log_level=logging.DEBUG)

特に、 DEBUG といった冗長なイベントレベルを設定している場合、プログラムの標準エラー出力をつまらせてしまう原因になるため、ファイルへの出力が推奨されます。

Client.run() を使用せずにライブラリ提供の構成を使用して logging を設定したい場合は、 discord.utils.setup_logging() を使用できます。

import discord

discord.utils.setup_logging()

# or, for example
discord.utils.setup_logging(level=logging.INFO, root=False)

logging モジュールを使用するとより高度なセットアップが行えます。以下の例では、HTTPリクエスト以外のすべてのライブラリの出力に対しDEBUG出力を使用するローテーションを行うファイルハンドラを構成します。

import discord
import logging
import logging.handlers

logger = logging.getLogger('discord')
logger.setLevel(logging.DEBUG)
logging.getLogger('discord.http').setLevel(logging.INFO)

handler = logging.handlers.RotatingFileHandler(
    filename='discord.log',
    encoding='utf-8',
    maxBytes=32 * 1024 * 1024,  # 32 MiB
    backupCount=5,  # Rotate through 5 files
)
dt_fmt = '%Y-%m-%d %H:%M:%S'
formatter = logging.Formatter('[{asctime}] [{levelname:<8}] {name}: {message}', dt_fmt, style='{')
handler.setFormatter(formatter)
logger.addHandler(handler)

# Assume client refers to a discord.Client subclass...
# Suppress the default configuration since we have our own
client.run(token, log_handler=None)

詳細は、logging モジュールのドキュメントを参照してください。

バージョン 2.0 で変更: ライブラリがデフォルト logging 構成を提供するようになりました。