base: github.com/grailbio/base/eventlog Index | Files | Directories

package eventlog

import "github.com/grailbio/base/eventlog"

Package eventlog provides logging of semi-structured events, particularly in service of downstream analysis, e.g. when machines are started, when a user issues a command, when failures happen.

For example, you can log events to CloudWatch Logs:

sess := session.NewSession()
cw := cloudwatchlogs.New(sess)
e := NewCloudWatchEventer(cw, "myLogGroup", "myLogStream")
e.Event("rpcRetry", "org", "GRAIL", "retry", 0, "maxRetry", 10)
e.Event("machineStopped", "addr", "192.168.1.1", "duration", 3600.0, "startTime": 1584140534)

These events can now be analyzed and monitored using CloudWatch Logs tooling.

Index

Package Files

eventlog.go

type Eventer Uses

type Eventer interface {
    // Event logs an event of typ with (key string, value interface{}) fields given in fieldPairs
    // as k0, v0, k1, v1, ...kn, vn. For example:
    //
    //  s.Event("machineStart", "addr", "192.168.1.2", "time", time.Now().Unix())
    //
    // The value will be serialized as JSON.
    //
    // The key "eventType" is reserved. Field keys must be unique. Any violation will result
    // in the event being dropped and logged.
    //
    // Implementations must be safe for concurrent use.
    Event(typ string, fieldPairs ...interface{})
}

Eventer is called to log events.

type Nop Uses

type Nop struct{}

Nop is a no-op Eventer.

func (Nop) Event Uses

func (Nop) Event(_ string, _ ...interface{})

Event implements Eventer.

Directories

PathSynopsis
cloudwatch
internal/marshal

Package eventlog imports 1 packages (graph) and is imported by 2 packages. Updated 2020-03-28. Refresh now. Tools for package owners.