Skip to content

Commit 843314d

Browse files
committed
🎨 Updated LoggerConfig schema default to default_factory for dynamic class instances.
1 parent 0b17cff commit 843314d

File tree

1 file changed

+27
-17
lines changed

1 file changed

+27
-17
lines changed

beans_logging/schemas.py

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,19 @@
1616
)
1717

1818

19+
def _get_logs_dir() -> str:
20+
return os.path.join(os.getcwd(), "logs")
21+
22+
23+
def _get_app_name() -> str:
24+
return (
25+
os.path.splitext(os.path.basename(sys.argv[0]))[0]
26+
.strip()
27+
.replace(" ", "-")
28+
.lower()
29+
)
30+
31+
1932
class ExtraBaseModel(BaseModel):
2033
model_config = ConfigDict(extra="allow")
2134

@@ -42,7 +55,7 @@ class StreamPM(ExtraBaseModel):
4255
min_length=3,
4356
max_length=511,
4457
)
45-
std_handler: StdHandlerPM = Field(default=StdHandlerPM())
58+
std_handler: StdHandlerPM = Field(default_factory=StdHandlerPM)
4659

4760

4861
class LogHandlersPM(ExtraBaseModel):
@@ -53,10 +66,10 @@ class LogHandlersPM(ExtraBaseModel):
5366
max_length=511,
5467
)
5568
log_path: constr(strip_whitespace=True) = Field(
56-
default="{app_name}.std.all.log", min_length=4, max_length=4095
69+
default="{app_name}.std.all.log", min_length=4, max_length=1024
5770
)
5871
err_path: constr(strip_whitespace=True) = Field(
59-
default="{app_name}.std.err.log", min_length=4, max_length=4095
72+
default="{app_name}.std.err.log", min_length=4, max_length=1024
6073
)
6174

6275
@model_validator(mode="after")
@@ -73,10 +86,10 @@ class JsonHandlersPM(ExtraBaseModel):
7386
enabled: bool = Field(default=False)
7487
use_custom: bool = Field(default=False)
7588
log_path: constr(strip_whitespace=True) = Field(
76-
default="{app_name}.json.all.log", min_length=4, max_length=4095
89+
default="{app_name}.json.all.log", min_length=4, max_length=1024
7790
)
7891
err_path: constr(strip_whitespace=True) = Field(
79-
default="{app_name}.json.err.log", min_length=4, max_length=4095
92+
default="{app_name}.json.err.log", min_length=4, max_length=1024
8093
)
8194

8295
@model_validator(mode="after")
@@ -91,7 +104,7 @@ def _check_log_path(self) -> "JsonHandlersPM":
91104

92105
class FilePM(ExtraBaseModel):
93106
logs_dir: constr(strip_whitespace=True) = Field(
94-
default=os.path.join(os.getcwd(), "logs"), min_length=2, max_length=4095
107+
default_factory=_get_logs_dir, min_length=2, max_length=1024
95108
)
96109
rotate_size: int = Field(
97110
default=10_000_000, ge=1_000, lt=1_000_000_000 # 10MB = 10 * 1000 * 1000
@@ -101,8 +114,8 @@ class FilePM(ExtraBaseModel):
101114
encoding: constr(strip_whitespace=True) = Field(
102115
default="utf8", min_length=2, max_length=31
103116
)
104-
log_handlers: LogHandlersPM = Field(default=LogHandlersPM())
105-
json_handlers: JsonHandlersPM = Field(default=JsonHandlersPM())
117+
log_handlers: LogHandlersPM = Field(default_factory=LogHandlersPM)
118+
json_handlers: JsonHandlersPM = Field(default_factory=JsonHandlersPM)
106119

107120
@field_validator("rotate_time", mode="before")
108121
@classmethod
@@ -119,7 +132,7 @@ class AutoLoadPM(ExtraBaseModel):
119132

120133

121134
class InterceptPM(ExtraBaseModel):
122-
auto_load: AutoLoadPM = Field(default=AutoLoadPM())
135+
auto_load: AutoLoadPM = Field(default_factory=AutoLoadPM)
123136
include_modules: List[str] = Field(default=[])
124137
mute_modules: List[str] = Field(default=[])
125138

@@ -130,17 +143,14 @@ class ExtraPM(ExtraBaseModel):
130143

131144
class LoggerConfigPM(ExtraBaseModel):
132145
app_name: constr(strip_whitespace=True) = Field(
133-
default=os.path.splitext(os.path.basename(sys.argv[0]))[0]
134-
.strip()
135-
.replace(" ", "_")
136-
.lower(),
146+
default_factory=_get_app_name,
137147
min_length=1,
138148
max_length=127,
139149
)
140150
level: LevelEnum = Field(default=LevelEnum.INFO)
141151
use_backtrace: bool = Field(default=True)
142152
use_diagnose: bool = Field(default=False)
143-
stream: StreamPM = Field(default=StreamPM())
144-
file: FilePM = Field(default=FilePM())
145-
intercept: InterceptPM = Field(default=InterceptPM())
146-
extra: ExtraPM = Field(default=ExtraPM())
153+
stream: StreamPM = Field(default_factory=StreamPM)
154+
file: FilePM = Field(default_factory=FilePM)
155+
intercept: InterceptPM = Field(default_factory=InterceptPM)
156+
extra: ExtraPM = Field(default_factory=ExtraPM)

0 commit comments

Comments
 (0)