Skip to content

Commit a5cb1d3

Browse files
authored
Simplify interface (#6)
Remove the not-so-useful StructLog class in favor of a simpler builder function Remove useless __call__
1 parent e1e9c9d commit a5cb1d3

File tree

7 files changed

+28
-39
lines changed

7 files changed

+28
-39
lines changed

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,8 @@ provides:
4141
import structlog
4242
import structlog_gcp
4343

44-
gcp_logs = structlog_gcp.StructlogGCP()
45-
46-
structlog.configure(processors=gcp_logs.build_processors())
44+
processors = structlog_gcp.build_processors()
45+
structlog.configure(processors=processors)
4746
```
4847

4948
Then, you can use `structlog` as usual:

examples/cloud-function/main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
import structlog_gcp
99

10-
gcp_logs = structlog_gcp.StructlogGCP()
11-
structlog.configure(processors=gcp_logs.build_processors())
10+
processors = structlog_gcp.build_processors()
11+
structlog.configure(processors=processors)
1212

1313

1414
@functions_framework.http

structlog_gcp/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
from .base import StructlogGCP # noqa: F401
1+
from .base import build_processors # noqa: F401
2+
3+
__all__ = [
4+
"build_processors",
5+
]

structlog_gcp/base.py

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,15 @@
33
from . import errors, processors
44

55

6-
class StructlogGCP:
7-
def __init__(self) -> None:
8-
pass
6+
def build_processors() -> list[Processor]:
7+
procs = []
98

10-
def build_processors(self) -> list[Processor]:
11-
procs = []
9+
procs.extend(processors.CoreCloudLogging().setup())
10+
procs.extend(processors.LogSeverity().setup())
11+
procs.extend(processors.CodeLocation().setup())
12+
procs.extend(errors.ReportException().setup())
13+
procs.extend(errors.ReportError(["CRITICAL"]).setup())
14+
procs.append(errors.add_service_context)
15+
procs.extend(processors.FormatAsCloudLogging().setup())
1216

13-
procs.extend(processors.CoreCloudLogging().setup())
14-
procs.extend(processors.LogSeverity().setup())
15-
procs.extend(processors.CodeLocation().setup())
16-
procs.extend(errors.ReportException().setup())
17-
procs.extend(errors.ReportError(["CRITICAL"]).setup())
18-
procs.append(errors.add_service_context)
19-
procs.extend(processors.FormatAsCloudLogging().setup())
20-
21-
return procs
17+
return procs

structlog_gcp/errors.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,7 @@ def __init__(self, log_level: str = "CRITICAL") -> None:
4040
self.log_level = log_level
4141

4242
def setup(self) -> list[Processor]:
43-
return [
44-
# structlog.processors.ExceptionRenderer(self.format_exception),
45-
structlog.processors.format_exc_info,
46-
self.__call__,
47-
]
43+
return [structlog.processors.format_exc_info, self]
4844

4945
def __call__(
5046
self, logger: WrappedLogger, method_name: str, event_dict: EventDict
@@ -77,7 +73,7 @@ def __init__(self, severities: list[str]) -> None:
7773
self.severities = severities
7874

7975
def setup(self) -> list[Processor]:
80-
return [self.__call__]
76+
return [self]
8177

8278
def _build_service_context(self) -> dict[str, str]:
8379
# https://cloud.google.com/error-reporting/reference/rest/v1beta1/ServiceContext

structlog_gcp/processors.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def setup(self) -> list[Processor]:
1818
structlog.processors.UnicodeDecoder(),
1919
# Add a timestamp in ISO 8601 format.
2020
structlog.processors.TimeStamper(fmt="iso"),
21-
self.__call__,
21+
self,
2222
]
2323

2424
def __call__(
@@ -37,10 +37,7 @@ class FormatAsCloudLogging:
3737
"""Finalize the Google Cloud Logging event message and replace the logging event"""
3838

3939
def setup(self) -> list[Processor]:
40-
return [
41-
self.__call__,
42-
structlog.processors.JSONRenderer(),
43-
]
40+
return [self, structlog.processors.JSONRenderer()]
4441

4542
def __call__(
4643
self, logger: WrappedLogger, method_name: str, event_dict: EventDict
@@ -74,11 +71,8 @@ def __init__(self) -> None:
7471
}
7572

7673
def setup(self) -> list[Processor]:
77-
return [
78-
# Add log level to event dict.
79-
structlog.processors.add_log_level,
80-
self.__call__,
81-
]
74+
# Add log level to event dict.
75+
return [structlog.processors.add_log_level, self]
8276

8377
def __call__(
8478
self, logger: WrappedLogger, method_name: str, event_dict: EventDict
@@ -108,7 +102,7 @@ def setup(self) -> list[Processor]:
108102
structlog.processors.CallsiteParameter.LINENO,
109103
]
110104
)
111-
return [call_site_proc, self.__call__]
105+
return [call_site_proc, self]
112106

113107
def __call__(
114108
self, logger: WrappedLogger, method_name: str, event_dict: EventDict

tests/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ def logger():
2222
"structlog.processors.format_exc_info", side_effect=fakes.format_exc_info
2323
),
2424
):
25-
gcp_logs = structlog_gcp.StructlogGCP()
26-
structlog.configure(processors=gcp_logs.build_processors())
25+
processors = structlog_gcp.build_processors()
26+
structlog.configure(processors=processors)
2727
logger = structlog.get_logger()
2828
yield logger
2929

0 commit comments

Comments
 (0)