Categorygithub.com/thehivecorporation/log
modulepackage
1.8.5
Repository: https://github.com/thehivecorporation/log.git
Documentation: pkg.go.dev

# README

log

Another logger with telemetry capabilities using StatsD, Prometheus, InfluxDB...

How to use it

You can use it like any common log package:

import (
    "github.com/thehivecorporation/log/writers/text"
    "github.com/thehivecorporation/log"
)

log.SetWriter(text.New(os.Stdout))
log.SetLevel(log.LevelInfo)

log.Info("Some information")
log.Debug("Some Debug info")

How to use telemetry:

Use any of the included implementations on telemetry folder:

import (
    "github.com/thehivecorporation/log/telemetry/statsd"
    "github.com/thehivecorporation/log/writers/json"
    "github.com/thehivecorporation/log"
)

log.SetWriter(text.New(os.Stdout))
log.SetTelemetry(statsd.New(statsd.Conf{
    Address:   "localhost:9125",
    Namespace: "myapp.",
}))

log.WithTags("tag1").Inc("mycounter", 1).WithField("key", "value").Info("incremented")
// Outputs
// {"level":1,"messages":["incremented"],"fields":{"key":"value"},"ts":"2017-10-16T00:03:07.685786669+02:00"}

At the same time a +1 with tag 'tag1' to the metric 'mycounter'

More information

Common functionality is covered by the following interface:

type Tags map[string]string
type Fields map[string]interface{}
type Level int

type Logger interface {
	Debug(msg interface{}) Telemetry
	Info(msg interface{}) Telemetry
	Warn(msg interface{}) Telemetry
	Error(msg interface{}) Telemetry
	Fatal(msg interface{}) Telemetry

	Debugf(msg string, v ...interface{}) Telemetry
	Infof(msg string, v ...interface{}) Telemetry
	Warnf(msg string, v ...interface{}) Telemetry
	Errorf(msg string, v ...interface{}) Telemetry
	Fatalf(msg string, v ...interface{}) Telemetry

	WithField(s string, v interface{}) Logger
	WithFields(Fields) Logger
	WithError(...error) Logger
	WithErrors(...error) Logger

	WithTags(t Tags) Telemetry
	WithTag(string, string) Telemetry

	Clone(callStack int) Logger
}

Using WithTags(s ...string) Telemetry will return an instance to use it with the following methods:

type Telemetry interface {
	WithTags(t Tags) Telemetry
	WithTag(string, string) Telemetry

	Inc(name string, value float64, extra ...interface{}) Logger
	Gauge(string, float64, ...interface{}) Logger
	Histogram(name string, value float64, extra ...interface{}) Logger
	Summary(name string, value float64, extra ...interface{}) Logger

	Clone() Telemetry
	SetLogger(l Logger)
}

Log outputs (Writers)

  • Text with a provided io.Writer
  • JSON with a provided io.Writer
  • Custom will resend any output back for your control in case that you need to customize what to do with each output
  • Memory (stores each log to an array, useful for testing purposes)
  • Multi: Allows to use more than one Writer so you can log to console AND to Papertrail
  • Papertrail
  • TODO Kafka
  • TODO Google PubSub
  • TODO NATS
  • TODO NSQ
  • TODO AWS Kinesis
  • TODO AWS SQS
  • TODO Elastic

Telemetry implementations:

  • StatsD
  • Prometheus
  • InfluxDB
  • Multi (alpha) to monitor using more than one system
  • TODO OpenTSDB Test

# Packages

No description provided by the author
No description provided by the author
No description provided by the author

# Functions

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Constants

Log levels.
Log levels.
Log levels.
Log levels.
Log levels.
Log levels.

# Variables

Colors mapping.
No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author

# Interfaces

No description provided by the author
No description provided by the author
No description provided by the author

# Type aliases

No description provided by the author
No description provided by the author
No description provided by the author