summaryrefslogtreecommitdiffstats
path: root/git_trace2_event_log.py
diff options
context:
space:
mode:
Diffstat (limited to 'git_trace2_event_log.py')
-rw-r--r--git_trace2_event_log.py45
1 files changed, 40 insertions, 5 deletions
diff --git a/git_trace2_event_log.py b/git_trace2_event_log.py
index 8f12d1a9..0e5e9089 100644
--- a/git_trace2_event_log.py
+++ b/git_trace2_event_log.py
@@ -144,6 +144,19 @@ class EventLog(object):
144 command_event['subcommands'] = subcommands 144 command_event['subcommands'] = subcommands
145 self._log.append(command_event) 145 self._log.append(command_event)
146 146
147 def LogConfigEvents(self, config, event_dict_name):
148 """Append a |event_dict_name| event for each config key in |config|.
149
150 Args:
151 config: Configuration dictionary.
152 event_dict_name: Name of the event dictionary for items to be logged under.
153 """
154 for param, value in config.items():
155 event = self._CreateEventDict(event_dict_name)
156 event['param'] = param
157 event['value'] = value
158 self._log.append(event)
159
147 def DefParamRepoEvents(self, config): 160 def DefParamRepoEvents(self, config):
148 """Append a 'def_param' event for each repo.* config key to the current log. 161 """Append a 'def_param' event for each repo.* config key to the current log.
149 162
@@ -152,12 +165,34 @@ class EventLog(object):
152 """ 165 """
153 # Only output the repo.* config parameters. 166 # Only output the repo.* config parameters.
154 repo_config = {k: v for k, v in config.items() if k.startswith('repo.')} 167 repo_config = {k: v for k, v in config.items() if k.startswith('repo.')}
168 self.LogConfigEvents(repo_config, 'def_param')
169
170 def GetDataEventName(self, value):
171 """Returns 'data-json' if the value is an array else returns 'data'."""
172 return 'data-json' if value[0] == '[' and value[-1] == ']' else 'data'
155 173
156 for param, value in repo_config.items(): 174 def LogDataConfigEvents(self, config, prefix):
157 def_param_event = self._CreateEventDict('def_param') 175 """Append a 'data' event for each config key/value in |config| to the current log.
158 def_param_event['param'] = param 176
159 def_param_event['value'] = value 177 For each keyX and valueX of the config, "key" field of the event is '|prefix|/keyX'
160 self._log.append(def_param_event) 178 and the "value" of the "key" field is valueX.
179
180 Args:
181 config: Configuration dictionary.
182 prefix: Prefix for each key that is logged.
183 """
184 for key, value in config.items():
185 event = self._CreateEventDict(self.GetDataEventName(value))
186 event['key'] = f'{prefix}/{key}'
187 event['value'] = value
188 self._log.append(event)
189
190 def ErrorEvent(self, msg, fmt):
191 """Append a 'error' event to the current log."""
192 error_event = self._CreateEventDict('error')
193 error_event['msg'] = msg
194 error_event['fmt'] = fmt
195 self._log.append(error_event)
161 196
162 def _GetEventTargetPath(self): 197 def _GetEventTargetPath(self):
163 """Get the 'trace2.eventtarget' path from git configuration. 198 """Get the 'trace2.eventtarget' path from git configuration.