๐ ํ๊ฒฝ
Mac M1
Python 3.9.12
VsCode
๐ ๊ฐ์
Django์์ logsํด๋๋ฅผ ๋ง๋ค์ด ๊ธฐ๋ก์ ๋จ๊ฒจ๋ด ์๋ค!
๐ ๋ชฉ์ฐจ
- ๋ก๊น ์ ํ์ํ ์ค์
- postman์ผ๋ก ํ ์คํธํ๊ธฐ
- ๋ก๊น ์ ํ์ํ ์ค์
djangoProject๋ฅผ ์ค๋นํฉ๋๋ค. settings.py ์ ํด๋น ๋ด์ฉ์ ์ถ๊ฐํฉ๋๋ค.
# ๋ก๊ทธ ํ์ ์ถ๊ฐ
LOGGING = {
'version': 1,
'disable_existing_loggers': False, # True์ผ๊ฒฝ์ฐ ์ด๋ฏธ ์กด์ฌํ๋ ๋ก๊ฑฐ๋ค์ ๋นํ์ฑํ
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue', # DEBUG๊ฐ True์ผ ๋ ๋ ์ฝ๋๋ฅผ ์ ๋ฌํฉ๋๋ค ๋ญ์๋ฆฐ์ง
},
},
# ๋ก๊ทธํ
์คํธ ํ์์ ์
'formatters': {
'formatNormal': {'format': '%(levelname)s %(message)s [%(name)s:%(lineno)s]'},
'formatTime': {'format': '[%(asctime)s] %(levelname)s %(message)s', 'datefmt': "%Y-%m-%d %H:%M:%S"},
},
'handlers': {
# ํ์ผ ์ ์ฅ๋ฐฉ์
'file': {
'level': 'INFO', # ์ค์ ํ ๋ ๋ฒจ์ด์์ ๋ก๊ทธ๋ง ๋์ํฉ๋๋ค.
'class': 'logging.handlers.RotatingFileHandler', # ํ์ผ์ฒ๋ฆฌ ํธ๋ค๋ฌ๋ก ํ์ผ์ ์ฅ
'filename': os.path.join(BASE_DIR.parent, "logs/admin_log"+datetime.datetime.now().strftime('%Y-%m-%d')+".log"),
'encoding': 'UTF-8', # ์ธ์ฝ๋ฉ ๊นจ์ง์ง ๋ง๋ผ๊ณ
'maxBytes': 1024 * 1024 * 5, # 5 MB /
'backupCount': 5,
'formatter': 'formatTime',
},
# ์ฝ์(ํฐ๋ฏธ๋)์ ์ถ๋ ฅ
'console': {
'level': 'DEBUG', # ์ค์ ํ ๋ ๋ฒจ์ด์์ ๋ก๊ทธ๋ง ๋์ํฉ๋๋ค.
'class': 'logging.StreamHandler', # stream์ผ๋ก ๋ก๊น
์ถ๋ ฅ
'formatter': 'formatTime',
},
},
# ์ค์ ํ ๋ ๋ฒจ์ด์์ ๋ก๊ทธ๋ง ๋์ํฉ๋๋ค. DEBUG < INFO < WARNING < ERROR < CRITICAL
'loggers': {
# ์ข
๋ฅ
'django.server': {
'handlers': ['file', 'console'],
'propagate': False,
'level': 'DEBUG', # ์ค์ ํ ๋ ๋ฒจ์ด์์ ๋ก๊ทธ๋ง ๋์ํฉ๋๋ค.
},
# 'django.server': {
# 'handlers': ['file', 'console'],
# 'propagate': False,
# 'level': 'CRITICAL',
# },
# 'django.request': {
# 'handlers': ['file', 'console'],
# 'propagate': False,
# 'level': 'DEBUG',
# },
},
}
์ดํดํ๋๋ฐ ๋์์ด ๋๋ ๋งํฌ
์ ํ ํฌ ์ฅ๊ณ : https://docs.python.org/ko/3/library/logging.handlers.html#logging.NullHandler
django: https://docs.djangoproject.com/en/4.0/topics/logging/#topic-logging-parts-filters
import logging
logger = logging.getLogger('django.server')
def testFunc(self, request, *args, **kwargs):
try:
print(__name__)
url = 'http://localhost:8080/v2/quick/testt/'
logger.info('test1')
logger.debug('test2')
logger.critical('test3')
logger.error('test4')
logger.warning('test5')
print(request)
return Response(status=status.HTTP_205_RESET_CONTENT)
except Exception as e:
return Response(status=status.HTTP_400_BAD_REQUEST)
- PostMan์ผ๋ก ํ ์คํธํ๊ธฐ
๋ก๊ทธ ์ธํ ํ ๋ ๋๋ ํฐ๋ฆฌ ์ค์ ์ ๋ณด๊ณ ๋ณธ์ธ์ด ์ํ๋ ์์น์ logs ํด๋๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ ์คํํ๋ฉด ํด๋น ๋ก๊ทธ๊ฐ ๋์ต๋๋ค.
๐ ๊ทผ๊ฑฐ ์๋ ์กฐ์ธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. ์ฑ์คํ ์ฝ๋ฉ ํ์ธ์.