@@ -190,6 +190,34 @@ logging.basicConfig(handlers=[handler])
190190logging.error(" hello" ) # at=ERROR when=2022-04-20 msg=hello
191191```
192192
193+ ** defaults**
194+
195+ Instead of providing key/value pairs at each log call, you can provide defaults:
196+
197+ ``` py
198+ import logging
199+ from logfmter import Logfmter
200+
201+ formatter = Logfmter(
202+ keys = [" at" , " when" , " trace_id" ],
203+ mapping = {" at" : " levelname" , " when" : " asctime" },
204+ datefmt = " %Y-%m-%d " ,
205+ defaults = {" trace_id" : " 123" },
206+ )
207+
208+ handler = logging.StreamHandler()
209+ handler.setFormatter(formatter)
210+
211+ logging.basicConfig(handlers = [handler])
212+
213+ logging.error(" hello" ) # at=ERROR when=2022-04-20 trace_id=123 msg=hello
214+ ```
215+
216+ This will cause all logs to have the ` trace_id=123 ` pair regardless of including
217+ ` trace_id ` in keys or manually adding ` trace_id ` to the ` extra ` parameter or the ` msg ` object.
218+
219+ > Note, the defaults object uses format strings as values. This allows for variables templating. See "Aliases" guide for more information.
220+
193221## Extension
194222
195223You can subclass the formatter to change its behavior.
@@ -222,24 +250,28 @@ logging.error({"example": True}) # at=ERROR example=yes
222250
223251## Guides
224252
225- ** Default Key/Value Pairs **
253+ ** Aliases **
226254
227- Instead of providing key/value pairs at each log call, you can override
228- the log record factory to provide defaults:
255+ Providing a format string as a default's key/value allows the realization of aliases:
229256
230257``` py
231- _record_factory = logging.getLogRecordFactory()
258+ import logging
259+ from logfmter import Logfmter
232260
233- def record_factory (* args , ** kwargs ):
234- record = _record_factory(* args, ** kwargs)
235- record.trace_id = 123
236- return record
261+ formatter = Logfmter(
262+ keys = [" at" , " when" , " func" ],
263+ mapping = {" at" : " levelname" , " when" : " asctime" },
264+ datefmt = " %Y-%m-%d " ,
265+ defaults = {" func" : " {module} .{funcName} :{lineno} " },
266+ )
237267
238- logging.setLogRecordFactory(record_factory )
239- ```
268+ handler = logging.StreamHandler( )
269+ handler.setFormatter(formatter)
240270
241- This will cause all logs to have the ` trace_id=123 ` pair regardless of including
242- ` trace_id ` in keys or manually adding ` trace_id ` to the ` extra ` parameter or the ` msg ` object.
271+ logging.basicConfig(handlers = [handler])
272+
273+ logging.error(" hello" ) # at=ERROR when=2022-04-20 func="mymodule.__main__:12" msg=hello
274+ ```
243275
244276## Gotchas
245277
0 commit comments