Djangoのloggingモジュールの使用方法

設定テンプレート

下記内容を、 settings.py に記述する。

#ログ出力
LOGGING = {
    'version': 1,   # これを設定しないと怒られる
    'formatters': { # 出力フォーマットを文字列形式で指定する
        'all': {    # 出力フォーマットに`all`という名前をつける
            'format': '\t'.join([
                "[%(levelname)s]",
                "asctime:%(asctime)s",
                "module:%(module)s",
                "message:%(message)s",
                "process:%(process)d",
                "thread:%(thread)d",
            ])
        },
    },
    'handlers': {  # ログをどこに出すかの設定
        'console': { # どこに出すかの設定をもう一つ、こちらの設定には`console`という名前
            'level': 'DEBUG',
            # こちらは標準出力に出してくれるクラスを指定
            'class': 'logging.StreamHandler', 
            'formatter': 'all'
        },
    },
    'loggers': {  # どんなloggerがあるかを設定する
        'apps': {  # ディレクトリの指定でよいという名前のloggerを定義
            'handlers': ['console'],  # 先述のfile, consoleの設定で出力
            'level': 'DEBUG',  # 出力の
        },
        'django': {  # djangoという名前のloggerを定義。django自身が出力に使用する。
            'handlers': ['console'],  # 先述のfile, consoleの設定で出力
            'level': 'INFO',
        },
    },
}

実際の使い方

使いたいモジュールの中で、ログ出力ができるようにするために、ロガーのインスタンスを作成する。

logger = logging.getLogger(__name__);

実際に出力したい場所に、出力のメソッドを使用して出力をおこなう。

# デバッグとして出力したい場合に使用する。
logger.debug('test');

# 稼働の情報として出力したい場合に使用する。
logger.info('test');

# 稼働には問題ないが、想定外の情報として出力したい場合に使用する。
logger.warning('test');

# 稼働に影響のある想定外の情報として出力したい場合に使用する。
logger.error('test');

# 稼働が停止してしまう情報のとして出力したい場合に使用する。
logger.critical('test');

出力を変更したい場合は、設定情報の level を変更するとよい。

記述できる level は参考から

参考

Logging | Django documentation | Django (djangoproject.com)