logの方針
PythonのLog出力はPython内臓のLoggingモジュールを使う。下記の例はLog設定が揃っているConfigとして、Logの方針がそのまま溶けている。
LOG_CONFIG = {
'version': 1,
'formatters': {
'general': {
'format': "[%(asctime)s %(levelname)8s] %(filename)s %(funcName)s at line %(lineno)s - %(message)s"
}
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'general',
'level': 'DEBUG',
},
'file_app': {
'class': 'logging.handlers.RotatingFileHandler',
'level': 'DEBUG',
'formatter': 'general',
'filename': os.path.join(BASE_DIR, 'log/app.log'),
'mode': 'a',
'maxBytes': 10485760,
'backupCount': 5,
},
'file_error': {
'class': 'logging.handlers.RotatingFileHandler',
'level': 'ERROR',
'formatter': 'general',
'filename': os.path.join(BASE_DIR, 'log/error.log'),
'mode': 'a',
'maxBytes': 10485760,
'backupCount': 5,
}
},
'root': {
'handlers': ('console', 'file_app', 'file_error'),
'level': 'DEBUG'
}
}
出力タイプ
出力タイプは上記のhandlerのところで設定を担当する。大きくConsole出力とFile出力に分けられている。
Console
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'general',
'level': 'DEBUG',
},
...
},
console
というキー名は勝手に決めてOK- Consoleは
prod
環境かenv
環境かによって、levelの表示が違う。prod
の場合はINFO
レベル、env
の場合はDEBUG
レベルで出す。
File
'handlers': {
...
},
'file_app': {
'class': 'logging.handlers.RotatingFileHandler',
'level': 'DEBUG',
'formatter': 'general',
'filename': os.path.join(BASE_DIR, 'log/app.log'),
'mode': 'a',
'maxBytes': 10485760,
'backupCount': 5,
},
'file_error': {
'class': 'logging.handlers.RotatingFileHandler',
'level': 'ERROR',
'formatter': 'general',
'filename': os.path.join(BASE_DIR, 'log/error.log'),
'mode': 'a',
'maxBytes': 10485760,
'backupCount': 5,
}
},
file_app
、file_error
というキー名は勝手に決めてOK- fileタイプのハンドラーはアプリログとエラーログに分ける。
- 1はアプリログとしてアプリが出すすべてのログを取る
- 2はエラーログとしてアプリが出すエラーログだけを取る
- 基本ログが貯めるパスは
[root]/log/
の直下にする - アプリローグは
ログメッセージ
Time
Where
Message
ログレベル
Info
Debug
Error
- TraceBack
'C Lang > Python Program Diary' 카테고리의 다른 글
pyenv로 python인스톨 후 pipenv로 가상환경 관리하기 (0) | 2020.02.06 |
---|---|
dict를 sorting하기 (0) | 2020.01.09 |
pyenv 정리 (0) | 2019.11.18 |
파이썬 언더스코어(_)에 대하여 (0) | 2019.11.14 |
Pipenv을 활용한 Python개발 (0) | 2019.11.11 |