/timber

Primary LanguageGoApache License 2.0Apache-2.0

timber -- Cedar Buildlogger Client

Overview

The Timber library is used by Evergreen to send test results and performance data to Cedar, and contains configuration utilities for connecting to Cedar.

See cedar and poplar for more information.

It also implements a grip Sender backed by Cedar Buildlogger which is still used for some log storage purposes by Evergreen.

See grip for more information.

Features

When initializing a Sender with timber, a gRPC connection to a Cedar backed application is established. Log lines are buffered and sent over in batches to Cedar via this gRPC connection. Buffer size, flush intervals, etc. are all configurable. The Sender is thread-safe.

Code Example

Using the timber Sender is straightforward, once the logger is setup it can be passed around anywhere in your code. Log lines are sent using the Send command:

opts := &timber.LoggerOptions{}
// populate options struct
// ...
l := timber.MakeLogger(ctx, "logging-example", opts)
grip.SetSender(l)

l.Send(message.ConvertToComposer(level.Info, "logging is easy!"))
l.Send(message.ConvertToComposer(level.Debug, "another example"))
// make sure to close our your logger!
err := l.Close()

Development

The timber project uses a makefile to coordinate testing.

The makefile provides the following targets:

build
Compiles non-test code.
test
Runs all tests, sequentially, for all packages.
test-<package>
Runs all tests for a specific package.
race, race-<package>
As with their test counterpart, these targets run tests with the race detector enabled.
lint, lint-<package>
Installs and runs the gometaliter with appropriate settings to lint the project.

File tickets in Jira with the MAKE project.

Documentation

See the timber godoc for complete documentation.

See the grip godoc for documentation of the Sender interface.