Skip to content

Simple golang logger broker under hashicorp/logutils.

License

Notifications You must be signed in to change notification settings

lillilli/logger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logger

Go Report Card GoDoc GitHub license

Simple logger broker build upon hashicorp/logutils.

Description

Simple logger, that implement specified interface (logger.Logger). That logger can log into anything, that implemented io.Writer interface.

Base

Logger params setup by one call of Init(logger.Prams) method:

// Params - logger params
type Params struct {
  // Output interface
  Writer   io.Writer
  // Log levels
  Levels   []string
  // Min log level (all logs, that stand before that level will not be logged)
  MinLevel string
}

Logger interface:

// Logger - logger interface
type Logger interface {
  Debug(msg string)
  Debugf(msg string, args ...interface{})

  Info(msg string)
  Infof(format string, args ...interface{})

  Warn(msg string)
  Warnf(format string, args ...interface{})

  Error(msg string)
  Errorf(format string, args ...interface{})

  Fatal(msg string)
  Fatalf(format string, args ...interface{})
}

Log format

# <data> <time> <severity> <module>: <message>

2018/05/08 09:28:49 [INFO] service: Starting...

Usage examples

stderr

package main

import (
  "github.com/lillilli/logger"
)

type Service struct {
  log logger.Logger
}

func NewService() *Service {
  return &Service{
    log: logger.NewLogger("service name"),
  }
}

func (s *Service) SayHi(name string) {
  s.log.Infof("Saying hi to %s", name)
}

func main() {
  service := NewService()
  service.SayHi("Alex")

  // Output:
  // 2019/03/12 11:56:53 [INFO] service name: Saying hi to Alex
}

GELF (graylog)

import "gopkg.in/Graylog2/go-gelf.v1/gelf"

gelfWriter, err := gelf.NewWriter("localhost:12201")
if err != nil {
  return errors.Wrap(err, "unable to create gelf writer")
}

syslog

import (
	"log"
	"log/syslog"

	"github.com/lillilli/logger"
)

func main() {
  logWriter, err := syslog.New(syslog.LOG_NOTICE, "service_name")

  if err != nil {
    log.Fatalf("Unable to create syslog writer: %v", err)
  }

  logger.Init(logger.Params{
    Writer: logWriter,
  })

  log := logger.NewLogger("service")
  log.Info("I'm going to syslog")
}

rsyslog (udp)

logWriter, err := syslog.Dial("udp", "rsyslog:514", syslog.LOG_NOTICE, "service_name")

if err != nil {
  return errors.Wrap(err, "unable to create syslog writer")
}

rsyslog (tcp)

logWriter, err := syslog.Dial("tcp", "rsyslog:10514", syslog.LOG_NOTICE, "service_name")

if err != nil {
  return errors.Wrap(err, "unable to create syslog writer")
}

License

Released under the MIT License.

About

Simple golang logger broker under hashicorp/logutils.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages