読者です 読者をやめる 読者になる 読者になる

くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Djangoでログ/ロガーの設定(logging)

Djangoを使ってWebサービスを作っているときに、ロガーを導入したときの備忘録。

環境は、Django1.10.1, Python2.7。

Qiitaにsakamossanさんのすてきな記事があったので、ほぼ流用

setting.pyにloggerの設定を書く

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': {  # ログをどこに出すかの設定
        'file': {  # どこに出すかの設定に名前をつける `file`という名前をつけている
            'level': 'DEBUG',  # DEBUG以上のログを取り扱うという意味
            'class': 'logging.handlers.RotatingFileHandler',  # ログを出力するためのクラスを指定(サイズローテーション
            'filename': os.path.join(BASE_DIR, 'django.log'),  # どこに出すか
            'formatter': 'all',  # どの出力フォーマットで出すかを名前で指定
            'maxBytes': 1024 * 1024 * 10, # 10GBでローテーション
            'backupCount': 10, # バックアップファイルは10ファイルまで
        },
        'console': { # どこに出すかの設定をもう一つ、こちらの設定には`console`という名前
            'level': 'DEBUG',
            # こちらは標準出力に出してくれるクラスを指定
            'class': 'logging.StreamHandler', 
            'formatter': 'all'
        },
    },
    'loggers': {  # どんなloggerがあるかを設定する
        'command': {  # commandという名前のloggerを定義
            'handlers': ['file', 'console'],  # 先述のfile, consoleの設定で出力
            'level': 'DEBUG',
        },
    },
}

ロガーを使う

ロガーは、以下の感じで使う。

logger = logging.getLogger('command')
logger.info("表示するメッセージ")

以上!!

参考にしたサイト様