loglevel

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2019 License: MIT Imports: 6 Imported by: 0

README

go-loglevel

Build Status Go Report Card

Simple implementation of logs with level filter.

About

This is a super simple implementation of logs with level filter using only the stdlib.

If you need something more advanced, I recommend these other libs:

How to use

package main

import (
	"log"
	"os"

	"github.com/allisson/go-loglevel"
)

var (
	simpleLogger *loglevel.Logger
	jsonLogger   *loglevel.Logger
)

func init() {
    // Get level from LOG_LEVEL envvar
	level := loglevel.LevelFromEnv()
	simpleLogger = loglevel.NewLogger(os.Stdout, "", log.LstdFlags, level, loglevel.NewSimpleFormatter())
	jsonLogger = loglevel.NewLogger(os.Stdout, "", log.LstdFlags, level, loglevel.NewJSONFormatter())
}

func main() {
	simpleLogger.Info("Info Message", loglevel.Field("key-1", "value-1"), loglevel.Field("key-2", "value-2"))
	// output: 2019/09/23 17:33:02 INFO Info Message key-1=value-1 key-2=value-2
	jsonLogger.Info("Info Message", loglevel.Field("key-1", "value-1"), loglevel.Field("key-2", "value-2"))
	// output: 2019/09/23 17:33:02 INFO Info Message {"key-1":"value-1","key-2":"value-2"}
}
go run example/main.go
2019/09/23 17:50:01 INFO Info Message key-1=value-1 key-2=value-2
2019/09/23 17:50:01 INFO Info Message {"key-1":"value-1","key-2":"value-2"}
LOG_LEVEL=CRITICAL go run example/main.go # don't show anything

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IntToLevel

func IntToLevel(level int) string

IntToLevel returns a string based on int level

func LevelFromEnv

func LevelFromEnv() int

LevelFromEnv returns a int based on LOG_LEVEL envvar

func StringToLevel

func StringToLevel(level string) int

StringToLevel returns a int based on name of level

Types

type Formatter

type Formatter interface {
	Format(logLevel int, msg string, fields ...GenericField) string
}

Formatter is an interface that handles message format

type GenericField

type GenericField struct {
	Key   string
	Value string
}

GenericField represents a simple key value field

func Field

func Field(key, value string) GenericField

Field returns a filled GenericField

type JSONFormatter

type JSONFormatter struct{}

JSONFormatter implements Formatter interface

func NewJSONFormatter

func NewJSONFormatter() *JSONFormatter

NewJSONFormatter returns a pointer of JSONFormatter

func (*JSONFormatter) Format

func (j *JSONFormatter) Format(logLevel int, msg string, fields ...GenericField) string

Format is a implementation of Formatter.Format

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

Logger ...

func NewLogger

func NewLogger(out io.Writer, prefix string, flag, logLevel int, formatter Formatter) *Logger

NewLogger returns a pointer of Logger

func (*Logger) Critical

func (l *Logger) Critical(msg string, fields ...GenericField)

Critical ...

func (*Logger) Debug

func (l *Logger) Debug(msg string, fields ...GenericField)

Debug ...

func (*Logger) Error

func (l *Logger) Error(msg string, fields ...GenericField)

Error ...

func (*Logger) Info

func (l *Logger) Info(msg string, fields ...GenericField)

Info ...

func (*Logger) Warning

func (l *Logger) Warning(msg string, fields ...GenericField)

Warning ...

type SimpleFormatter

type SimpleFormatter struct{}

SimpleFormatter implements Formatter interface

func NewSimpleFormatter

func NewSimpleFormatter() *SimpleFormatter

NewSimpleFormatter returns a pointer of SimpleFormatter

func (*SimpleFormatter) Format

func (s *SimpleFormatter) Format(logLevel int, msg string, fields ...GenericField) string

Format is a implementation of Formatter.Format

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL