Skip to content

Conversation

@trulede
Copy link
Contributor

@trulede trulede commented Jan 4, 2026

Advanced logging with slog.

Overview of changes:

  • Select log format from cli: --log=json. Default is "Task" (i.e. existing logger).
  • New TaskLogHandler, implements existing logger behaviour.
  • New Taskf() logger api for structured logs; only prints for json/text loggers. Logs task, command, hash, err, duration etc.
  • Stdout/Stderr capture for structured logs (i.e. only json/text logs).

Example output:

$ task test --log=json --verbose
{"time":"2026-01-04T16:08:39.592831048+01:00","level":"VERBOSE","msg":"task: \"test\" started\n"}
{"time":"2026-01-04T16:08:39.592944607+01:00","level":"TASK","msg":"Task started","task":"test","action":"start","hash":"6918201770935703603"}
{"time":"2026-01-04T16:08:39.593899444+01:00","level":"VERBOSE","msg":"task: \"gotestsum:install\" started\n"}
{"time":"2026-01-04T16:08:39.593917175+01:00","level":"TASK","msg":"Task started","task":"gotestsum:install","action":"start","hash":"4395592628618886232"}
{"time":"2026-01-04T16:08:39.594012859+01:00","level":"VERBOSE","msg":"task: status command command -v gotestsum exited zero\n"}
{"time":"2026-01-04T16:08:39.594020828+01:00","level":"INFO","msg":"task: Task \"gotestsum:install\" is up to date\n"}
{"time":"2026-01-04T16:08:39.594024195+01:00","level":"TASK","msg":"Task finished","task":"gotestsum:install","action":"finish","hash":"4395592628618886232","duration":"105.831µs","error":null}
{"time":"2026-01-04T16:08:39.613659358+01:00","level":"INFO","msg":"task: [test] gotestsum -f 'pkgname' ./...\n"}
{"time":"2026-01-04T16:08:39.616214278+01:00","level":"TASK","msg":"Command started","task":"test","command":"gotestsum -f 'pkgname' ./...","action":"start","hash":"6918201770935703603"}
{"time":"2026-01-04T16:08:43.562842614+01:00","level":"TASK","msg":"Command finished","task":"test","command":"gotestsum -f 'pkgname' ./...","action":"finish","hash":"6918201770935703603","duration":"3.946629712s","error":null,"stdout":"... DONE 564 tests in 1.965s\n","stderr":""}
{"time":"2026-01-04T16:08:43.562897846+01:00","level":"VERBOSE","msg":"task: \"test\" finished\n"}
{"time":"2026-01-04T16:08:43.562901043+01:00","level":"TASK","msg":"Task finished","task":"test","action":"finish","hash":"6918201770935703603","duration":"3.969956812s","error":null}

$ task test --log=json --silent
{"time":"2026-01-04T16:10:10.644697829+01:00","level":"TASK","msg":"Task started","task":"test","action":"start","hash":"6918201770935703603"}
{"time":"2026-01-04T16:10:10.646072248+01:00","level":"TASK","msg":"Task started","task":"gotestsum:install","action":"start","hash":"4395592628618886232"}
{"time":"2026-01-04T16:10:10.646184868+01:00","level":"TASK","msg":"Task finished","task":"gotestsum:install","action":"finish","hash":"4395592628618886232","duration":"112.044µs","error":null}
{"time":"2026-01-04T16:10:10.669405841+01:00","level":"TASK","msg":"Command started","task":"test","command":"gotestsum -f 'pkgname' ./...","action":"start","hash":"6918201770935703603"}
{"time":"2026-01-04T16:10:14.711063899+01:00","level":"TASK","msg":"Command finished","task":"test","command":"gotestsum -f 'pkgname' ./...","action":"finish","hash":"6918201770935703603","duration":"4.041646141s","error":null,"stdout":"... DONE 564 tests in 1.965s\n","stderr":""}
{"time":"2026-01-04T16:10:14.711171123+01:00","level":"TASK","msg":"Task finished","task":"test","action":"finish","hash":"6918201770935703603","duration":"4.066485991s","error":null}

Related issues:

#2384
#2453
#2482
#551
#1428
#1013
#1674

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant