[server] Implement google-fluentd compatible logging.

The hardest part is collecting various useful information about the request:
  * End-client IP address: extracted from X-Forwarded-For header.
  * Cloud Trace ID: extracted from X-Cloud-Trace-Context header.
  * Request URL: reconstructed based on request headers.
  * Log severity: calculated based on max observed severity inside the handler.
  * Response status and size: calculated by substituting http.ResponseWriter.

All this stuff surfaces in Stackdriver Logs UI.

R=jchinlee@chromium.org, nodir@chromium.org
BUG=959427

Change-Id: I820df2dbb644bbe28d9f99ab3c235769177c3da9
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/1616011
Commit-Queue: Vadim Shtayura <vadimsh@chromium.org>
Reviewed-by: Nodir Turakulov <nodir@chromium.org>
3 files changed
tree: b4ada9b9f535a714cda4bbd77aa9934baea3a3f5
  1. .gitattributes
  2. .travis.yml
  3. AUTHORS
  4. CONTRIBUTING.md
  5. CONTRIBUTORS
  6. LICENSE
  7. OWNERS
  8. PRESUBMIT.py
  9. README.md
  10. appengine/
  11. auth/
  12. buildbucket/
  13. cipd/
  14. client/
  15. codereview.settings
  16. common/
  17. config/
  18. cq/
  19. dm/
  20. examples/
  21. gce/
  22. grpc/
  23. hardcoded/
  24. logdog/
  25. luci_notify/
  26. lucicfg/
  27. lucictx/
  28. machine-db/
  29. milo/
  30. mmutex/
  31. mp/
  32. pre-commit-go.yml
  33. scheduler/
  34. scripts/
  35. server/
  36. starlark/
  37. swarming/
  38. tokenserver/
  39. tools/
  40. tumble/
  41. vpython/
  42. web/
README.md

luci-go: LUCI services and tools in Go

GoDoc

Installing

LUCI Go code is meant to be worked on from an Chromium infra.git checkout, which enforces packages versions and Go toolchain version. First get fetch via depot_tools.git then run:

fetch infra
cd infra/go
eval `./env.py`
cd src/go.chromium.org/luci

Contributing

Contributing uses the same flow as Chromium contributions.