Skip to content

Commit 0ec3ae8

Browse files
feat: logging refactor
1 parent 938b674 commit 0ec3ae8

File tree

12 files changed

+144
-139
lines changed

12 files changed

+144
-139
lines changed

backend/app/main.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
import subprocess
22

3-
import logging
43
from flask import Flask
54
from flask_cors import CORS
65
from flask_restx import Api
76

8-
# Configuração básica de logging
9-
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
10-
logger = logging.getLogger(__name__)
11-
127
from src.infrastructure.routes.education.view import education_ns
138
from src.infrastructure.routes.experiences.view import experiences_ns
149

@@ -17,6 +12,9 @@
1712
from src.infrastructure.routes.projects.view import projects_ns
1813
from src.infrastructure.routes.social_media.view import social_media_ns
1914
from src.infrastructure.dependencie_injection import ApplicationDependencies
15+
from src.infrastructure.utils.logger import get_logger
16+
17+
logger = get_logger(__name__)
2018

2119
class ApplicationSetup:
2220
def __init__(self):

backend/logs/portfolio_api.log

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,3 +260,51 @@ Detalhes do erro:
260260
2025-09-25 14:34:39,236 - portfolio_api - ERROR - Error getting experiences: Test error
261261
2025-09-25 14:34:39,246 - portfolio_api - ERROR - Error getting projects: Test error
262262
2025-09-25 14:34:39,254 - portfolio_api - ERROR - Error getting social media: Test error
263+
ERROR - src.infrastructure.routes.education.view - Error getting education: Test error
264+
ERROR - src.infrastructure.routes.experiences.view - Error getting experiences: Test error
265+
ERROR - src.infrastructure.routes.projects.view - Error getting projects: Test error
266+
ERROR - src.infrastructure.routes.social_media.view - Error getting social media: Test error
267+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de projetos não encontrados no cache. Buscando no repositório...
268+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 projetos no cache...
269+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de experiências não encontrados no cache. Buscando no repositório...
270+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 experiências no cache...
271+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de formações não encontrados no cache. Buscando no repositório...
272+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 formações no cache...
273+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de certificações não encontrados no cache. Buscando no repositório...
274+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 certificações no cache...
275+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de redes sociais não encontrados no cache. Buscando no repositório...
276+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 redes sociais no cache...
277+
INFO - src.infrastructure.services.portfolio_data_service - [CACHE HIT] 4 projetos recuperados do cache
278+
INFO - src.infrastructure.services.portfolio_data_service - [CACHE HIT] 4 experiências recuperadas do cache
279+
ERROR - src.infrastructure.routes.education.view - Error getting education: Test error
280+
ERROR - src.infrastructure.routes.experiences.view - Error getting experiences: Test error
281+
ERROR - src.infrastructure.routes.projects.view - Error getting projects: Test error
282+
ERROR - src.infrastructure.routes.social_media.view - Error getting social media: Test error
283+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de projetos não encontrados no cache. Buscando no repositório...
284+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 projetos no cache...
285+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de experiências não encontrados no cache. Buscando no repositório...
286+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 experiências no cache...
287+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de formações não encontrados no cache. Buscando no repositório...
288+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 formações no cache...
289+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de certificações não encontrados no cache. Buscando no repositório...
290+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 certificações no cache...
291+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de redes sociais não encontrados no cache. Buscando no repositório...
292+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 redes sociais no cache...
293+
INFO - src.infrastructure.services.portfolio_data_service - [CACHE HIT] 4 projetos recuperados do cache
294+
INFO - src.infrastructure.services.portfolio_data_service - [CACHE HIT] 4 experiências recuperadas do cache
295+
ERROR - src.infrastructure.routes.education.view - Error getting education: Test error
296+
ERROR - src.infrastructure.routes.experiences.view - Error getting experiences: Test error
297+
ERROR - src.infrastructure.routes.projects.view - Error getting projects: Test error
298+
ERROR - src.infrastructure.routes.social_media.view - Error getting social media: Test error
299+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de projetos não encontrados no cache. Buscando no repositório...
300+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 projetos no cache...
301+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de experiências não encontrados no cache. Buscando no repositório...
302+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 experiências no cache...
303+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de formações não encontrados no cache. Buscando no repositório...
304+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 formações no cache...
305+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de certificações não encontrados no cache. Buscando no repositório...
306+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 certificações no cache...
307+
WARNING - src.infrastructure.services.portfolio_data_service - [CACHE MISS] Dados de redes sociais não encontrados no cache. Buscando no repositório...
308+
INFO - src.infrastructure.services.portfolio_data_service - Salvando 4 redes sociais no cache...
309+
INFO - src.infrastructure.services.portfolio_data_service - [CACHE HIT] 4 projetos recuperados do cache
310+
INFO - src.infrastructure.services.portfolio_data_service - [CACHE HIT] 4 experiências recuperadas do cache

backend/src/infrastructure/adapters/outbound_postgres_adapter.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
from src.domain.dto.project import Project
1616
from src.domain.dto.social_media import SocialMedia
1717
from src.infrastructure.ports.repository_interface import RepositoryInterface
18-
from src.infrastructure.utils.logger import logger
18+
from src.infrastructure.utils.logger import get_logger
19+
20+
logger = get_logger(__name__)
1921

2022

2123
class PostgresAdapter(RepositoryInterface):

backend/src/infrastructure/adapters/outbound_redis_adapter.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
"""Redis Adapter for caching portfolio data."""
2+
13
import json
24
import os
35
from typing import Optional, List, Dict, Any
@@ -11,7 +13,9 @@
1113
from src.domain.dto.project import Project
1214
from src.domain.dto.social_media import SocialMedia
1315
from src.infrastructure.ports.cache_provider_interface import CacheProvider
14-
from src.infrastructure.utils.logger import logger
16+
from src.infrastructure.utils.logger import get_logger
17+
18+
logger = get_logger(__name__)
1519

1620

1721
class RedisAdapter(CacheProvider):
@@ -42,7 +46,7 @@ def __init__(self) -> None:
4246
try:
4347
self.redis.ping()
4448
except RedisError as e:
45-
logger.error(f"Redis Connection Error: {e}")
49+
logger.error(f"Erro de conexão com o Redis: {str(e)}", exc_info=True)
4650
raise
4751

4852
def get_cache_data_by_key(self, key: str):
@@ -52,7 +56,7 @@ def get_cache_data_by_key(self, key: str):
5256
return None
5357
return json.loads(data)
5458
except RedisError as e:
55-
logger.error(f"Redis GET Key Error: {e}")
59+
logger.error(f"Erro ao obter chave do Redis: {str(e)}", exc_info=True)
5660
raise
5761

5862
def get_all_projects(self) -> [] or List[Project]:
Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,39 @@
1-
import logging
21
from src.infrastructure.adapters.outbound_postgres_adapter import PostgresAdapter
32
from src.infrastructure.adapters.outbound_redis_adapter import RedisAdapter
43
from src.infrastructure.services.portfolio_data_service import PortfolioDataService
4+
from src.infrastructure.utils.logger import get_logger
55

6-
logger = logging.getLogger(__name__)
6+
logger = get_logger(__name__)
77

88
class ApplicationDependencies:
99
_instance = None
1010

1111
def __new__(cls):
1212
if cls._instance is None:
13-
logger.info("🚀 Criando nova instância de ApplicationDependencies")
13+
logger.info("Criando nova instância de ApplicationDependencies")
1414
cls._instance = super().__new__(cls)
1515

1616
try:
17-
logger.info("🔄 Inicializando PostgresAdapter...")
17+
logger.info("Inicializando PostgresAdapter...")
1818
cls._instance.data_repository = PostgresAdapter()
19-
logger.info("✅ PostgresAdapter inicializado com sucesso!")
20-
logger.info("🔄 Inicializando RedisAdapter...")
19+
logger.info("PostgresAdapter inicializado com sucesso")
20+
21+
logger.info("Inicializando RedisAdapter...")
2122
cls._instance.cache_provider = RedisAdapter()
22-
logger.info("✅ RedisAdapter inicializado com sucesso!")
23-
logger.info("🔄 Inicializando PortfolioDataService...")
23+
logger.info("RedisAdapter inicializado com sucesso")
24+
25+
logger.info("Inicializando PortfolioDataService...")
2426
cls._instance.portfolio_data_service = PortfolioDataService(
2527
cls._instance.data_repository, cls._instance.cache_provider
2628
)
27-
logger.info("PortfolioDataService inicializado com sucesso!")
29+
logger.info("PortfolioDataService inicializado com sucesso")
2830

2931
except Exception as e:
30-
logger.error(f"Erro ao inicializar ApplicationDependencies: {str(e)}")
32+
logger.error(f"Erro ao inicializar ApplicationDependencies: {str(e)}", exc_info=True)
3133
raise
3234

33-
logger.info("🎉 ApplicationDependencies inicializado com sucesso!")
35+
logger.info("ApplicationDependencies inicializado com sucesso")
3436
else:
35-
logger.info("♻️Reutilizando instância existente de ApplicationDependencies")
37+
logger.info("Reutilizando instância existente de ApplicationDependencies")
3638

3739
return cls._instance

backend/src/infrastructure/routes/education/view.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
from flask_restx import Namespace, Resource
55

66
from src.infrastructure.utils.constants import HTTP_INTERNAL_SERVER_ERROR
7-
from src.infrastructure.utils.logger import logger
7+
from src.infrastructure.utils.logger import get_logger
88
from src.infrastructure.dependencie_injection import ApplicationDependencies
99

10+
logger = get_logger(__name__)
11+
1012
def get_portfolio_data_service():
1113
return ApplicationDependencies().portfolio_data_service
1214

backend/src/infrastructure/routes/experiences/view.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
def get_portfolio_data_service():
99
return ApplicationDependencies().portfolio_data_service
1010
from src.infrastructure.utils.constants import HTTP_INTERNAL_SERVER_ERROR
11-
from src.infrastructure.utils.logger import logger
11+
from src.infrastructure.utils.logger import get_logger
12+
13+
logger = get_logger(__name__)
1214

1315
experiences_ns = Namespace("Experiences", description="Companies experiences")
1416

backend/src/infrastructure/routes/projects/view.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
def get_portfolio_data_service():
99
return ApplicationDependencies().portfolio_data_service
1010
from src.infrastructure.utils.constants import HTTP_INTERNAL_SERVER_ERROR
11-
from src.infrastructure.utils.logger import logger
11+
from src.infrastructure.utils.logger import get_logger
12+
13+
logger = get_logger(__name__)
1214

1315
projects_blueprint = Blueprint("projects_bp", __name__)
1416
projects_ns = Namespace(

backend/src/infrastructure/routes/social_media/view.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
def get_portfolio_data_service():
99
return ApplicationDependencies().portfolio_data_service
1010
from src.infrastructure.utils.constants import HTTP_INTERNAL_SERVER_ERROR
11-
from src.infrastructure.utils.logger import logger
11+
from src.infrastructure.utils.logger import get_logger
12+
13+
logger = get_logger(__name__)
1214

1315
social_media_blueprint = Blueprint("social_media_bp", __name__)
1416
social_media_ns = Namespace(
Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import logging
21
from src.domain.dto.certification import Certification
32
from src.domain.dto.company_duration import CompanyDuration
43
from src.domain.dto.experience import Experience
@@ -7,9 +6,9 @@
76
from src.domain.dto.social_media import SocialMedia
87
from src.infrastructure.ports.repository_interface import RepositoryInterface
98
from src.infrastructure.ports.cache_provider_interface import CacheProvider
9+
from src.infrastructure.utils.logger import get_logger
1010

11-
12-
logger = logging.getLogger(__name__)
11+
logger = get_logger(__name__)
1312

1413
class PortfolioDataService:
1514
"""Portfolio Data Service"""
@@ -23,13 +22,13 @@ def projects(self) -> list[Project]:
2322
cache_projects = self.cache_provider.get_all_projects()
2423

2524
if cache_projects:
26-
logger.info(f"[CACHE HIT] {len(cache_projects)} projetos recuperados do cache")
25+
logger.info(f"[CACHE HIT] {len(cache_projects)} projetos recuperados do cache")
2726
return cache_projects
2827

29-
logger.warning("⚠️ [CACHE MISS] Dados de projetos não encontrados no cache. Buscando no repositório...")
28+
logger.warning("[CACHE MISS] Dados de projetos não encontrados no cache. Buscando no repositório...")
3029
repository_projects = self.data_repository.get_all_projects()
3130

32-
logger.info(f"💾 Salvando {len(repository_projects)} projetos no cache...")
31+
logger.info(f"Salvando {len(repository_projects)} projetos no cache...")
3332
self.cache_provider.set_projects(repository_projects)
3433

3534
return repository_projects
@@ -40,13 +39,13 @@ def experiences(self) -> list[Experience]:
4039
cache_experiences = self.cache_provider.get_all_experiences()
4140

4241
if cache_experiences:
43-
logger.info(f"[CACHE HIT] {len(cache_experiences)} experiências recuperadas do cache")
42+
logger.info(f"[CACHE HIT] {len(cache_experiences)} experiências recuperadas do cache")
4443
return cache_experiences
4544

46-
logger.warning("⚠️ [CACHE MISS] Dados de experiências não encontrados no cache. Buscando no repositório...")
45+
logger.warning("[CACHE MISS] Dados de experiências não encontrados no cache. Buscando no repositório...")
4746
repository_experiences = self.data_repository.get_all_experiences()
4847

49-
logger.info(f"💾 Salvando {len(repository_experiences)} experiências no cache...")
48+
logger.info(f"Salvando {len(repository_experiences)} experiências no cache...")
5049
self.cache_provider.set_experiences(repository_experiences)
5150

5251
return repository_experiences
@@ -55,13 +54,13 @@ def companies_duration(self) -> list[CompanyDuration]:
5554
cached_companies_duration = self.cache_provider.get_company_duration()
5655

5756
if cached_companies_duration:
58-
logger.info("[CACHE HIT] Durações de empresas recuperadas do cache")
57+
logger.info("[CACHE HIT] Durações de empresas recuperadas do cache")
5958
return cached_companies_duration
6059

61-
logger.warning("⚠️ [CACHE MISS] Dados de duração de empresas não encontrados no cache. Buscando no repositório...")
60+
logger.warning("[CACHE MISS] Dados de duração de empresas não encontrados no cache. Buscando no repositório...")
6261
repository_companies_duration = self.data_repository.get_company_duration()
6362

64-
logger.info("💾 Salvando durações de empresas no cache...")
63+
logger.info("Salvando durações de empresas no cache...")
6564
self.cache_provider.set_company_duration(repository_companies_duration)
6665

6766
return repository_companies_duration
@@ -71,13 +70,13 @@ def formations(self) -> list[Formation]:
7170
cached_formations = self.cache_provider.get_all_formations()
7271

7372
if cached_formations:
74-
logger.info(f"[CACHE HIT] {len(cached_formations)} formações recuperadas do cache")
73+
logger.info(f"[CACHE HIT] {len(cached_formations)} formações recuperadas do cache")
7574
return cached_formations
7675

77-
logger.warning("⚠️ [CACHE MISS] Dados de formações não encontrados no cache. Buscando no repositório...")
76+
logger.warning("[CACHE MISS] Dados de formações não encontrados no cache. Buscando no repositório...")
7877
repository_formations = self.data_repository.get_all_formations()
7978

80-
logger.info(f"💾 Salvando {len(repository_formations)} formações no cache...")
79+
logger.info(f"Salvando {len(repository_formations)} formações no cache...")
8180
self.cache_provider.set_formations(repository_formations)
8281

8382
return repository_formations
@@ -87,13 +86,13 @@ def certifications(self) -> list[Certification]:
8786
cached_certifications = self.cache_provider.get_all_certifications()
8887

8988
if cached_certifications:
90-
logger.info(f"[CACHE HIT] {len(cached_certifications)} certificações recuperadas do cache")
89+
logger.info(f"[CACHE HIT] {len(cached_certifications)} certificações recuperadas do cache")
9190
return cached_certifications
9291

93-
logger.warning("⚠️ [CACHE MISS] Dados de certificações não encontrados no cache. Buscando no repositório...")
92+
logger.warning("[CACHE MISS] Dados de certificações não encontrados no cache. Buscando no repositório...")
9493
repository_certifications = self.data_repository.get_all_certifications()
9594

96-
logger.info(f"💾 Salvando {len(repository_certifications)} certificações no cache...")
95+
logger.info(f"Salvando {len(repository_certifications)} certificações no cache...")
9796
self.cache_provider.set_certifications(repository_certifications)
9897

9998
return repository_certifications
@@ -103,13 +102,13 @@ def social_media(self) -> list[SocialMedia]:
103102
cached_social_media = self.cache_provider.get_all_social_media()
104103

105104
if cached_social_media:
106-
logger.info(f"[CACHE HIT] {len(cached_social_media)} redes sociais recuperadas do cache")
105+
logger.info(f"[CACHE HIT] {len(cached_social_media)} redes sociais recuperadas do cache")
107106
return cached_social_media
108107

109-
logger.warning("⚠️ [CACHE MISS] Dados de redes sociais não encontrados no cache. Buscando no repositório...")
108+
logger.warning("[CACHE MISS] Dados de redes sociais não encontrados no cache. Buscando no repositório...")
110109
repository_social_media = self.data_repository.get_all_social_media()
111110

112-
logger.info(f"💾 Salvando {len(repository_social_media)} redes sociais no cache...")
111+
logger.info(f"Salvando {len(repository_social_media)} redes sociais no cache...")
113112
self.cache_provider.set_social_media(repository_social_media)
114113

115114
return repository_social_media
@@ -119,13 +118,13 @@ def total_experience(self) -> dict:
119118
cached_total_experience = self.cache_provider.get_total_experience()
120119

121120
if cached_total_experience:
122-
logger.info("[CACHE HIT] Experiência total recuperada do cache")
121+
logger.info("[CACHE HIT] Experiência total recuperada do cache")
123122
return cached_total_experience
124123

125-
logger.warning("⚠️ [CACHE MISS] Dados de experiência total não encontrados no cache. Buscando no repositório...")
124+
logger.warning("[CACHE MISS] Dados de experiência total não encontrados no cache. Buscando no repositório...")
126125
repository_total_experience = self.data_repository.get_total_experience()
127126

128-
logger.info("💾 Salvando experiência total no cache...")
127+
logger.info("Salvando experiência total no cache...")
129128
self.cache_provider.set_total_experience(repository_total_experience)
130129

131130
return repository_total_experience

0 commit comments

Comments
 (0)