logを作ろう。
setting.py(設定ファイル)にlogを書く。
Djangoのlogはpythonのライブラリを元に作られているらしいので大まかなところは変わらないらしい.....
LEVELが存在する。以下の5種類
DEBUG :デバッグ目的の低レベルシステム情報
INFO :一般的なシステム情報
WARNING :発生した軽微な問題を説明する情報。
ERROR :発生した重大な問題を説明する情報。
CRITICAL :発生した重大な問題を説明する情報。
ロガー
- ログを記述する働き
ハンドラ
- ログをどのように動かすかを決めれる。
フォーマッター
- どのようにログに表示するかの書式を決めれる
# logging setting
LOG_BASE_DIR = os.path.join('/Users','name','projects','test','log')
LOGGING = {
'version':1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{asctime} {levelname} {module} {process:d} {thread:d} {message}',
'style': '{',
}, #verboseはただの名前で詳細という意味らしい。
'simple': {
'format': ' {asctime} {levelname} {filename} {message}',
'style': '{',
},
},
#formatterは、書式を設定する。
'handlers':{
# 'console':{ コンソールに書き込む
# 'class':'logging.StreamHandler',
# },
# 'file':{ # fileに書き込む
# 'level':'INFO',
# 'class':'logging.FileHandler',
# 'filename':str(BASE_DIR)+'/log/debug.log',
# },
'debug':{
'level':'DEBUG',
'class':'logging.FileHandler',
'filename':os.path.join(LOG_BASE_DIR,'debug.log'),
'formatter':'verbose',
},
'info':{
'level':'INFO',
'class':'logging.FileHandler',
'filename':os.path.join(LOG_BASE_DIR,'info.log'),
'formatter':'simple',
},
'warning':{
'level':'WARNING',
'class':'logging.FileHandler',
'filename':os.path.join(LOG_BASE_DIR,'warning.log'),
'formatter':'simple',
},
'error':{
'level':'ERROR',
'class':'logging.FileHandler',
'filename':os.path.join(LOG_BASE_DIR,'error.log'),
'formatter':'verbose',
},
'critical':{
'level':'CRITICAL',
'class':'logging.FileHandler',
'filename':os.path.join(LOG_BASE_DIR,'critical.log'),
'formatter':'verbose',
}
},# 5種類のハンドラを設定し、それぞれレベルがcriticalならcritical.logなどに書き込まれるように設定。
#ハンドラは、ロガーから受け取る
'loggers':{
'django':{
'handlers': ['debug','info','warning','error','critical'],
'level': 'INFO',
# 'level': 'DEBUG',
# 'propagate': True, 祖先ロガーのハンドラに渡されるらしい..
},
},
#ロガーは、ベース
}
verbose は'詳細'という意味で、デバッグなどの際に使用する書式です。
ちなみに、verbose以外の名前でも大丈夫でsampleやnameとかでもいいぽい(自分で決められる)。
参考:https://docs.python.org/3.8/library/logging.html#logrecord-attributes