From: Jeff Hostetler <[email protected]>
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