tree: 1ae135d345695bab4ba560f27fc3f09f851e6f57 [path history] [tgz]
  1. chug/
  2. ginkgoreporter/
  3. lagertest/
  4. lager_suite_test.go
  5. LICENSE
  6. logger.go
  7. logger_test.go
  8. models.go
  9. README.md
  10. reconfigurable_sink.go
  11. reconfigurable_sink_test.go
  12. writer_sink.go
  13. writer_sink_test.go
pkg/lager/core/README.md

lager

Lager is a logging library for go.

Usage

Instantiate a logger with the name of your component.

import (
  "paas_lager/lager"
)

logger := lager.NewLogger("my-app")

Sinks

Lager can write logs to a variety of destinations. You can specify the destinations using Lager sinks:

To write to an arbitrary Writer object:

logger.RegisterSink(lager.NewWriterSink(myWriter, lager.INFO))

Emitting logs

Lager supports the usual level-based logging, with an optional argument for arbitrary key-value data.

logger.Info("doing-stuff", logger.Data{
  "informative": true,
})

output:

{ "source": "my-app", "message": "doing-stuff", "data": { "informative": true }, "timestamp": 1232345, "log_level": 1 }

Error messages also take an Error object:

logger.Error("failed-to-do-stuff", errors.New("Something went wrong"))

output:

{ "source": "my-app", "message": "failed-to-do-stuff", "data": { "error": "Something went wrong" }, "timestamp": 1232345, "log_level": 1 }

Sessions

You can avoid repetition of contextual data using ‘Sessions’:


contextualLogger := logger.Session("my-task", logger.Data{ "request-id": 5, }) contextualLogger.Info("my-action")

output:

{ "source": "my-app", "message": "my-task.my-action", "data": { "request-id": 5 }, "timestamp": 1232345, "log_level": 1 }

License

Lager is Apache 2.0 licensed.