From 40ce74923de232b3a026161230e1f018cc96c4bb Mon Sep 17 00:00:00 2001 From: icurfer Date: Tue, 29 Apr 2025 00:26:40 +0900 Subject: [PATCH] log add --- .env.dev | 18 ++++++++++++---- .gitignore | 2 ++ blog/views.py | 17 ++++++++++++++- blog_prj/settings.py | 49 ++++++++++++++++++++++++++++++++++++++++++++ version | 2 +- 5 files changed, 82 insertions(+), 6 deletions(-) diff --git a/.env.dev b/.env.dev index 86da117..813cb89 100644 --- a/.env.dev +++ b/.env.dev @@ -1,10 +1,20 @@ DEBUG=1 SQL_ENGINE='django.db.backends.mysql' -SQL_HOST='192.168.0.101' -SQL_USER='dev' -SQL_PASSWORD='Rlaxodms90!@' -SQL_DATABASE='msa-django-demo' +SQL_HOST='114.110.160.185' +SQL_USER='demo' +SQL_PASSWORD='Ijinc123!@#$' +SQL_DATABASE='sdjo-django' SQL_PORT='3306' SECRET_KEY='django-insecure-*kh6e0376o-0m5n*xz^2a2t^fa^77c1=))f$3egn7!w7axaj-l' AUTH_VERIFY_URL=http://192.168.0.202:8000/api/auth/verify/ +# DEBUG=1 +# SQL_ENGINE='django.db.backends.mysql' +# SQL_HOST='192.168.0.101' +# SQL_USER='dev' +# SQL_PASSWORD='Rlaxodms90!@' +# SQL_DATABASE='msa-django-demo' +# SQL_PORT='3306' +# SECRET_KEY='django-insecure-*kh6e0376o-0m5n*xz^2a2t^fa^77c1=))f$3egn7!w7axaj-l' +AUTH_VERIFY_URL=http://192.168.0.202:8000/api/auth/verify/ + # CSRF_TRUSTED_ORIGINS=https://www.example.com,https://butler.example.com,https://butler.example.com:8000 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 5d381cc..307d311 100644 --- a/.gitignore +++ b/.gitignore @@ -122,6 +122,8 @@ celerybeat.pid # Environments .env +.env.dev +.env.prd .venv env/ venv/ diff --git a/blog/views.py b/blog/views.py index 213630f..c8e34ec 100644 --- a/blog/views.py +++ b/blog/views.py @@ -5,12 +5,15 @@ from rest_framework.exceptions import PermissionDenied from .models import Post from .serializers import PostSerializer from .utils import verify_token_with_auth_server +import logging # 2025-04-29 + +logger = logging.getLogger(__name__) # 2025-04-29 class PostListView(generics.ListAPIView): queryset = Post.objects.all().order_by('-created_at') serializer_class = PostSerializer permission_classes = [permissions.AllowAny] - + class PostListCreateView(generics.ListCreateAPIView): queryset = Post.objects.all().order_by('-created_at') serializer_class = PostSerializer @@ -19,7 +22,16 @@ class PostListCreateView(generics.ListCreateAPIView): def perform_create(self, serializer): token = self.request.headers.get("Authorization", "").replace("Bearer ", "") verify_token_with_auth_server(token) + verify_result = verify_token_with_auth_server(token) + # 2025-04-14 로그 등록 (콘솔+FluentBit용) + if verify_result == None: + logger.info(f"Token verified") + else: + logger.info(f"Token error") + serializer.save(author_name=self.request.user.username) + post_title=serializer.save(author_name=self.request.user.username) + logger.info(f"Post titled '{post_title}' has been created.") # ✅ 조회, 수정, 삭제 전부 처리 class PostDetailView(generics.RetrieveUpdateDestroyAPIView): @@ -38,6 +50,8 @@ class PostDetailView(generics.RetrieveUpdateDestroyAPIView): if serializer.instance.author_name != self.request.user.username: raise PermissionDenied("작성자만 수정할 수 있습니다.") serializer.save() + post_title=serializer.save(author_name=self.request.user.username) + logger.info(f"Post titled '{post_title}' has been updated.") def perform_destroy(self, instance): token = self.request.headers.get("Authorization", "").replace("Bearer ", "") @@ -46,3 +60,4 @@ class PostDetailView(generics.RetrieveUpdateDestroyAPIView): if instance.author_name != self.request.user.username: raise PermissionDenied("작성자만 삭제할 수 있습니다.") instance.delete() + logger.info(f"Post titled '{instance}' has been deleted.") \ No newline at end of file diff --git a/blog_prj/settings.py b/blog_prj/settings.py index 67ec1ed..bd3405d 100644 --- a/blog_prj/settings.py +++ b/blog_prj/settings.py @@ -52,6 +52,55 @@ SECRET_KEY = os.environ.get('SECRET_KEY', 'django-insecure-ec9me^z%x7-2vwee5#qq( # SECURITY WARNING: don't run with debug turned on in production! DEBUG = int(os.environ.get('DEBUG', 1)) +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, # Django 기본 로거 유지 + 'formatters': { + 'standard': { + 'format': '[{asctime}] {levelname} {name}:{lineno} {message}', + 'style': '{', + }, + }, + 'handlers': { + 'console': { + 'class': 'logging.StreamHandler', # 콘솔 출력 + 'formatter': 'standard', + }, + }, + 'root': { + 'handlers': ['console'], + 'level': 'INFO', # 기본 레벨 (애플리케이션 코드) + }, + 'loggers': { + 'django': { + 'handlers': ['console'], + 'level': 'INFO', # Django 프레임워크 전반 + 'propagate': False, + }, + 'django.request': { + 'handlers': ['console'], + 'level': 'ERROR', # 요청 관련 에러만 (500 에러 같은 것) + 'propagate': False, + }, + 'django.db.backends': { + 'handlers': ['console'], + 'level': 'WARNING', # DB 쿼리 경고만 + 'propagate': False, + }, + 'django.security': { + 'handlers': ['console'], + 'level': 'WARNING', # 보안 관련 경고 + 'propagate': False, + }, + # mattermost send message log 너무 많이 나와서 조정 + 'apscheduler': { + 'handlers': ['console'], + 'level': 'WARNING', # INFO 로그 안 보이게 함 | 'CRITICAL'로 맞추면 사실상 아무것도 안 찍힘 + 'propagate': False, + }, + }, +} + AUTH_VERIFY_URL = os.environ.get('AUTH_VERIFY_URL', 'NONE') ALLOWED_HOSTS = ["*"] diff --git a/version b/version index de302d4..05b19b1 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.0.3_r1 \ No newline at end of file +0.0.4 \ No newline at end of file