@@ -85,11 +85,27 @@ def parse(self):
85
85
standard_formatters = re .compile (r'\((.+?)\)' , re .IGNORECASE )
86
86
return standard_formatters .findall (self ._fmt )
87
87
88
+ def add_fields (self , log_record , record , message_dict ):
89
+ """
90
+ Override this method to implement custom logic for adding fields.
91
+ """
92
+ for field in self ._required_fields :
93
+ log_record [field ] = record .__dict__ .get (field )
94
+ log_record .update (message_dict )
95
+ merge_record_extra (record , log_record , reserved = self ._skip_fields )
96
+
97
+ def process_log_record (self , log_record ):
98
+ """
99
+ Override this method to implement custom logic
100
+ on the possibly ordered dictionary.
101
+ """
102
+ return log_record
103
+
88
104
def format (self , record ):
89
105
"""Formats a log record and serializes to json"""
90
- extras = {}
106
+ message_dict = {}
91
107
if isinstance (record .msg , dict ):
92
- extras = record .msg
108
+ message_dict = record .msg
93
109
record .message = None
94
110
else :
95
111
record .message = record .getMessage ()
@@ -102,10 +118,8 @@ def format(self, record):
102
118
except NameError :
103
119
log_record = {}
104
120
105
- for field in self ._required_fields :
106
- log_record [field ] = record .__dict__ .get (field )
107
- log_record .update (extras )
108
- merge_record_extra (record , log_record , reserved = self ._skip_fields )
121
+ self .add_fields (log_record , record , message_dict )
122
+ self .process_log_record (log_record )
109
123
110
124
return "%s%s" % (self .prefix ,
111
125
json .dumps (log_record ,
0 commit comments