Subject: [PATCH v1 00/25] RFC: structured logging

From: [email-masked]
Date: Fri, 13 Jul 2018 16:55:56 +0000

From: Jeff Hostetler <[email-masked]>

This RFC patch series adds structured logging to git.  The motivation,
background, and limitations of this feature are described at the
beginning of the design document in the first commit.  The design
document also contains a section comparing this feature with the
existing GIT_TRACE feature.  So I won't go into great detail here in
the cover letter.

My primary focus in this RFC is to reach agreement on the structured
logging facility.  This includes the basic approach and the various
logging fields and timers.

This patch series also includes several example usage commits, such as
adding timers around do_{read,write}_index, that demonstrate the
capabilities of the structured logging facility.  I only added a few
examples for things that I think we'll want long-term.  I did not
attempt to instrument everything.

This patch series requires V11 of my json-writer patch series.

Jeff Hostetler (25):
  structured-logging: design document
  structured-logging: add STRUCTURED_LOGGING=1 to Makefile
  structured-logging: add structured logging framework
  structured-logging: add session-id to log events
  structured-logging: set sub_command field for branch command
  structured-logging: set sub_command field for checkout command
  structured-logging: t0420 basic tests
  structured-logging: add detail-event facility
  structured-logging: add detail-event for lazy_init_name_hash
  structured-logging: add timer facility
  structured-logging: add timer around do_read_index
  structured-logging: add timer around do_write_index
  structured-logging: add timer around wt-status functions
  structured-logging: add timer around preload_index
  structured-logging: t0420 tests for timers
  structured-logging: add aux-data facility
  structured-logging: add aux-data for index size
  structured-logging: add aux-data for size of sparse-checkout file
  structured-logging: t0420 tests for aux-data
  structured-logging: add structured logging to remote-curl
  structured-logging: add detail-events for child processes
  structured-logging: add child process classification
  structured-logging: t0420 tests for child process detail events
  structured-logging: t0420 tests for interacitve child_summary
  structured-logging: add config data facility

 Documentation/config.txt                       |   33 +
 Documentation/git.txt                          |    6 +
 Documentation/technical/structured-logging.txt |  816 ++++++++++++++++
 Makefile                                       |    8 +
 builtin/branch.c                               |    8 +
 builtin/checkout.c                             |    7 +
 compat/mingw.h                                 |    7 +
 config.c                                       |    3 +
 editor.c                                       |    1 +
 git-compat-util.h                              |    9 +
 git.c                                          |   10 +-
 name-hash.c                                    |   26 +
 pager.c                                        |    1 +
 preload-index.c                                |    6 +
 read-cache.c                                   |   14 +
 remote-curl.c                                  |   16 +-
 run-command.c                                  |   14 +-
 run-command.h                                  |    2 +
 structured-logging.c                           | 1219 ++++++++++++++++++++++++
 structured-logging.h                           |  179 ++++
 sub-process.c                                  |    1 +
 t/t0001-init.sh                                |    1 +
 t/t0420-structured-logging.sh                  |  293 ++++++
 t/t0420/parse_json.perl                        |   52 +
 t/test-lib.sh                                  |    1 +
 unpack-trees.c                                 |    4 +-
 usage.c                                        |    4 +
 wt-status.c                                    |   20 +
 28 files changed, 2757 insertions(+), 4 deletions(-)
 create mode 100644 Documentation/technical/structured-logging.txt
 create mode 100644 structured-logging.c
 create mode 100644 structured-logging.h
 create mode 100755 t/t0420-structured-logging.sh
 create mode 100644 t/t0420/parse_json.perl

-- 
2.9.3