Skip to content

Commit 86d00ff

Browse files
authored
fix: set server logging (#36)
also truncate too long logs
1 parent bcd81f1 commit 86d00ff

4 files changed

Lines changed: 37 additions & 22 deletions

File tree

stac_fastapi/eodag/core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
NumType = Union[float, int]
8282

8383

84-
logger = logging.getLogger()
84+
logger = logging.getLogger(__name__)
8585

8686
loop = asyncio.get_event_loop()
8787

stac_fastapi/eodag/errors.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
RequestError: status.HTTP_400_BAD_REQUEST,
6363
}
6464

65-
logger = logging.getLogger("eodag.rest.server")
65+
logger = logging.getLogger(__name__)
6666

6767

6868
def exception_handler_factory(status_code: int):
@@ -93,24 +93,14 @@ class ResponseSearchError(Exception):
9393

9494
_alias_to_field_cache: dict[str, str] = {}
9595

96+
errors: list[SearchError]
97+
9698
def __init__(self, errors: list[tuple[str, Exception]], stac_metadata_model: type[BaseModel]) -> None:
9799
"""Initialize error response class."""
98100
self._errors = errors
99101
self._stac_medatata_model = stac_metadata_model
100102

101-
def _eodag_to_stac(self, value: str) -> str:
102-
"""Convert EODAG name to STAC."""
103-
if not self._alias_to_field_cache:
104-
self._alias_to_field_cache = {
105-
field.alias or str(field.validation_alias): name
106-
for name, field in self._stac_medatata_model.model_fields.items()
107-
}
108-
return self._alias_to_field_cache.get(value, value)
109-
110-
@property
111-
def errors(self) -> list[SearchError]:
112-
"""Return errors."""
113-
errors: list[SearchError] = []
103+
self.errors = []
114104
for name, exc in self._errors:
115105
error: SearchError = {
116106
"provider": name,
@@ -135,14 +125,21 @@ def errors(self) -> list[SearchError]:
135125
stac_param = self._eodag_to_stac(error_param)
136126
error["message"] = error["message"].replace(error_param, stac_param)
137127

138-
errors.append(error)
128+
self.errors.append(error)
139129

140-
return errors
130+
def _eodag_to_stac(self, value: str) -> str:
131+
"""Convert EODAG name to STAC."""
132+
if not self._alias_to_field_cache:
133+
self._alias_to_field_cache = {
134+
field.alias or str(field.validation_alias): name
135+
for name, field in self._stac_medatata_model.model_fields.items()
136+
}
137+
return self._alias_to_field_cache.get(value, value)
141138

142139
@property
143140
def status_code(self) -> int:
144141
"""Get global errors status code."""
145-
if len(self._errors) == 1:
142+
if len(self.errors) == 1:
146143
return self.errors[0]["status_code"]
147144

148145
return 400

stac_fastapi/eodag/logs.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,27 @@ async def dispatch(self, request, call_next):
6666
class CustomFormatter(logging.Formatter):
6767
"""custom logging formatter"""
6868

69+
def alias_logger_name(self, name: str) -> str:
70+
"""Replace logger name prefix with alias 'stac_eodag' if it starts with 'stac_fastapi.eodag'."""
71+
prefix = "stac_fastapi.eodag"
72+
alias = "stac_eodag"
73+
if name.startswith(prefix):
74+
name = alias + name[len(prefix) :]
75+
76+
name = name.replace(".extensions.", ".ext.")
77+
return name
78+
6979
def format(self, record):
7080
"""Add a unique log ID and
7181
custom timestamp in the log output."""
7282
request_id = request_id_context.get()
7383
if request_id == "None":
74-
request_id = uuid.uuid4().hex[:8]
84+
request_id = ""
7585
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
76-
logger_name = record.name
86+
logger_name = self.alias_logger_name(record.name)
7787
log_message = super().format(record)
7888

79-
log_message = f"{timestamp} {logger_name:<32} [{record.levelname:<8}] [{request_id}] {log_message}"
89+
log_message = f"{timestamp} {logger_name:<32} [{record.levelname:<8}] [{request_id:<8}] {log_message}"
8090

8191
return log_message
8292

@@ -85,10 +95,18 @@ def init_logging():
8595
"""Initialize the logging configuration"""
8696
settings = get_settings()
8797

98+
log_level = logging.DEBUG if settings.debug else logging.INFO
99+
88100
setup_logging(3 if settings.debug else 2, no_progress_bar=True)
89101

90102
custom_formatter = CustomFormatter()
91103

104+
logging.basicConfig(level=log_level)
105+
for handler in logging.getLogger().handlers:
106+
handler.setFormatter(custom_formatter)
107+
108+
logging.getLogger("eodag").propagate = False
109+
92110
for logger_name in ("eodag", "uvicorn", "uvicorn.access"):
93111
logger = logging.getLogger(logger_name)
94112
for handler in logger.handlers:

stac_fastapi/eodag/telemetry.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
from eodag import EODataAccessGateway
4747

4848

49-
logger = logging.getLogger("eodag.rest.utils.observability")
49+
logger = logging.getLogger(__name__)
5050

5151

5252
def create_tracer_provider(resource: Resource) -> Union[TracerProvider, trace.TracerProvider]:

0 commit comments

Comments
 (0)