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+
1932class 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
4861class 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 = 1023
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 = 1023
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 = 1023
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 = 1023
8093 )
8194
8295 @model_validator (mode = "after" )
@@ -91,7 +104,7 @@ def _check_log_path(self) -> "JsonHandlersPM":
91104
92105class 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 = 1023
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
121134class 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
131144class 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