logastic

package module
v0.84.0 Latest Latest
Warning

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

Go to latest
Published: Jan 11, 2021 License: MIT Imports: 11 Imported by: 0

README

Logastic

Build Status Go Reference

JSON logging for Go.

About

The software is considered to be at a alpha level of readiness - its extremely slow and allocates a lots of memory)

Install

go get github.com/danil/logastic@v0.84.0

Usage

Set Logastic as global logger

package main

import (
    "os"
    "log"

    "github.com/danil/logastic"
)

func main() {
    l := logastic.Log{
        Output: os.Stdout,
        Trunc: 12,
        Keys: [4]json.Marshaler{logastic.String("message"), logastic.String("excerpt")},
        Marks: [3][]byte{[]byte("…")},
        Replace: [][]byte{[]byte("\n"), []byte(" ")},
    }
    log.SetFlags(0)
    log.SetOutput(l)

    log.Print("Hello,\nWorld!")
}

Output:

{
    "message":"Hello,\nWorld!",
    "excerpt":"Hello, World…"
}

Use as GELF formater

package main

import (
    "log"
    "os"

    "github.com/danil/logastic"
)

func main() {
    l := logastic.GELF()
    l.Output = os.Stdout
    log.SetFlags(0)
    log.SetOutput(l)
    log.Print("Hello,\nGELF!")
}

Output:

{
    "version":"1.1",
    "short_message":"Hello, GELF!",
    "full_message":"Hello,\nGELF!",
    "timestamp":1602785340
}

Caveat: numeric types appears in the message as a string

package main

import (
    "log"
    "os"

    "github.com/danil/logastic"
)

func main() {
    l := logastic.Log{
        Output: os.Stdout,
        Keys: [4]json.Marshaler{logastic.String("message")},
    }
    log.SetFlags(0)
    log.SetOutput(l)

    log.Print(123)
    log.Print(3.21)
}

Output 1:

{
    "message":"123"
}

Output 2:

{
    "message":"3.21"
}

Benchmark

go test -bench=. ./...
goos: linux
goarch: amd64
pkg: github.com/danil/logastic
BenchmarkLogastic/io.Writer_36-8         	  323197	      3678 ns/op
BenchmarkLogastic/fmt.Fprint_io.Writer_1009-8         	  121657	     10417 ns/op

License

Copyright (C) 2021 Danil Kutkevich
See the LICENSE file for license rights and limitations (MIT)

Documentation

Index

Constants

View Source
const (
	Original = iota
	Excerpt
	Trail
	File
)
View Source
const (
	Trunc = iota
	Empty
	Blank
)

Variables

This section is empty.

Functions

func String

func String(a ...string) kvp

func StringAny added in v0.78.0

func StringAny(k string, v interface{}) kvp

func StringBool added in v0.78.0

func StringBool(k string, v bool) kvp

func StringBoolp added in v0.78.0

func StringBoolp(k string, v *bool) kvp

func StringBytes added in v0.78.0

func StringBytes(k string, v []byte) kvp

func StringBytesp added in v0.78.0

func StringBytesp(k string, v *[]byte) kvp

func StringComplex128 added in v0.78.0

func StringComplex128(k string, v complex128) kvp

func StringComplex128p added in v0.78.0

func StringComplex128p(k string, v *complex128) kvp

func StringComplex64 added in v0.78.0

func StringComplex64(k string, v complex64) kvp

func StringComplex64p added in v0.78.0

func StringComplex64p(k string, v *complex64) kvp

func StringDuration added in v0.78.0

func StringDuration(k string, v time.Duration) kvp

func StringDurationp added in v0.78.0

func StringDurationp(k string, v *time.Duration) kvp

func StringError added in v0.78.0

func StringError(k string, v error) kvp

func StringFloat32 added in v0.78.0

func StringFloat32(k string, v float32) kvp

func StringFloat32p added in v0.78.0

func StringFloat32p(k string, v *float32) kvp

func StringFloat64 added in v0.78.0

func StringFloat64(k string, v float64) kvp

func StringFloat64p added in v0.78.0

func StringFloat64p(k string, v *float64) kvp

func StringInt added in v0.78.0

func StringInt(k string, v int) kvp

func StringInt16 added in v0.78.0

func StringInt16(k string, v int16) kvp

func StringInt16p added in v0.78.0

func StringInt16p(k string, v *int16) kvp

func StringInt32 added in v0.78.0

func StringInt32(k string, v int32) kvp

func StringInt32p added in v0.78.0

func StringInt32p(k string, v *int32) kvp

func StringInt64 added in v0.78.0

func StringInt64(k string, v int64) kvp

func StringInt64p added in v0.78.0

func StringInt64p(k string, v *int64) kvp

func StringInt8 added in v0.78.0

func StringInt8(k string, v int8) kvp

func StringInt8p added in v0.78.0

func StringInt8p(k string, v *int8) kvp

func StringIntp added in v0.78.0

func StringIntp(k string, v *int) kvp

func StringRaw added in v0.78.0

func StringRaw(k string, v []byte) kvp

func StringReflect added in v0.78.0

func StringReflect(k string, v interface{}) kvp

func StringRunes added in v0.78.0

func StringRunes(k string, v []rune) kvp

func StringRunesp added in v0.78.0

func StringRunesp(k string, v *[]rune) kvp

func StringStringp added in v0.78.0

func StringStringp(k string, v *string) kvp

func StringTime added in v0.78.0

func StringTime(k string, v time.Time) kvp

func StringTimep added in v0.78.0

func StringTimep(k string, v *time.Time) kvp

func StringUint added in v0.78.0

func StringUint(k string, v uint) kvp

func StringUint16 added in v0.78.0

func StringUint16(k string, v uint16) kvp

func StringUint16p added in v0.78.0

func StringUint16p(k string, v *uint16) kvp

func StringUint32 added in v0.78.0

func StringUint32(k string, v uint32) kvp

func StringUint32p added in v0.78.0

func StringUint32p(k string, v *uint32) kvp

func StringUint64 added in v0.78.0

func StringUint64(k string, v uint64) kvp

func StringUint64p added in v0.78.0

func StringUint64p(k string, v *uint64) kvp

func StringUint8 added in v0.78.0

func StringUint8(k string, v uint8) kvp

func StringUint8p added in v0.78.0

func StringUint8p(k string, v *uint8) kvp

func StringUintp added in v0.78.0

func StringUintp(k string, v *uint) kvp

func StringUintptr added in v0.78.0

func StringUintptr(k string, v uintptr) kvp

func StringUintptrp added in v0.78.0

func StringUintptrp(k string, v *uintptr) kvp

func Text added in v0.81.0

func Text(a ...encoding.TextMarshaler) kvp

func TextAny added in v0.81.0

func TextAny(k encoding.TextMarshaler, v interface{}) kvp

func TextBool added in v0.81.0

func TextBool(k encoding.TextMarshaler, v bool) kvp

func TextBoolp added in v0.81.0

func TextBoolp(k encoding.TextMarshaler, v *bool) kvp

func TextBytes added in v0.81.0

func TextBytes(k encoding.TextMarshaler, v []byte) kvp

func TextBytesp added in v0.81.0

func TextBytesp(k encoding.TextMarshaler, v *[]byte) kvp

func TextComplex128 added in v0.81.0

func TextComplex128(k encoding.TextMarshaler, v complex128) kvp

func TextComplex128p added in v0.81.0

func TextComplex128p(k encoding.TextMarshaler, v *complex128) kvp

func TextComplex64 added in v0.81.0

func TextComplex64(k encoding.TextMarshaler, v complex64) kvp

func TextComplex64p added in v0.81.0

func TextComplex64p(k encoding.TextMarshaler, v *complex64) kvp

func TextDuration added in v0.81.0

func TextDuration(k encoding.TextMarshaler, v time.Duration) kvp

func TextDurationp added in v0.81.0

func TextDurationp(k encoding.TextMarshaler, v *time.Duration) kvp

func TextError added in v0.81.0

func TextError(k encoding.TextMarshaler, v error) kvp

func TextFloat32 added in v0.81.0

func TextFloat32(k encoding.TextMarshaler, v float32) kvp

func TextFloat32p added in v0.81.0

func TextFloat32p(k encoding.TextMarshaler, v *float32) kvp

func TextFloat64 added in v0.81.0

func TextFloat64(k encoding.TextMarshaler, v float64) kvp

func TextFloat64p added in v0.81.0

func TextFloat64p(k encoding.TextMarshaler, v *float64) kvp

func TextInt added in v0.81.0

func TextInt(k encoding.TextMarshaler, v int) kvp

func TextInt16 added in v0.81.0

func TextInt16(k encoding.TextMarshaler, v int16) kvp

func TextInt16p added in v0.81.0

func TextInt16p(k encoding.TextMarshaler, v *int16) kvp

func TextInt32 added in v0.81.0

func TextInt32(k encoding.TextMarshaler, v int32) kvp

func TextInt32p added in v0.81.0

func TextInt32p(k encoding.TextMarshaler, v *int32) kvp

func TextInt64 added in v0.81.0

func TextInt64(k encoding.TextMarshaler, v int64) kvp

func TextInt64p added in v0.81.0

func TextInt64p(k encoding.TextMarshaler, v *int64) kvp

func TextInt8 added in v0.81.0

func TextInt8(k encoding.TextMarshaler, v int8) kvp

func TextInt8p added in v0.81.0

func TextInt8p(k encoding.TextMarshaler, v *int8) kvp

func TextIntp added in v0.81.0

func TextIntp(k encoding.TextMarshaler, v *int) kvp

func TextRaw added in v0.81.0

func TextRaw(k encoding.TextMarshaler, v []byte) kvp

func TextReflect added in v0.81.0

func TextReflect(k encoding.TextMarshaler, v interface{}) kvp

func TextRunes added in v0.81.0

func TextRunes(k encoding.TextMarshaler, v []rune) kvp

func TextRunesp added in v0.81.0

func TextRunesp(k encoding.TextMarshaler, v *[]rune) kvp

func TextString added in v0.81.0

func TextString(k encoding.TextMarshaler, v string) kvp

func TextStringp added in v0.81.0

func TextStringp(k encoding.TextMarshaler, v *string) kvp

func TextTime added in v0.81.0

func TextTime(k encoding.TextMarshaler, v time.Time) kvp

func TextTimep added in v0.81.0

func TextTimep(k encoding.TextMarshaler, v *time.Time) kvp

func TextUint added in v0.81.0

func TextUint(k encoding.TextMarshaler, v uint) kvp

func TextUint16 added in v0.81.0

func TextUint16(k encoding.TextMarshaler, v uint16) kvp

func TextUint16p added in v0.81.0

func TextUint16p(k encoding.TextMarshaler, v *uint16) kvp

func TextUint32 added in v0.81.0

func TextUint32(k encoding.TextMarshaler, v uint32) kvp

func TextUint32p added in v0.81.0

func TextUint32p(k encoding.TextMarshaler, v *uint32) kvp

func TextUint64 added in v0.81.0

func TextUint64(k encoding.TextMarshaler, v uint64) kvp

func TextUint64p added in v0.81.0

func TextUint64p(k encoding.TextMarshaler, v *uint64) kvp

func TextUint8 added in v0.81.0

func TextUint8(k encoding.TextMarshaler, v uint8) kvp

func TextUint8p added in v0.81.0

func TextUint8p(k encoding.TextMarshaler, v *uint8) kvp

func TextUintp added in v0.81.0

func TextUintp(k encoding.TextMarshaler, v *uint) kvp

func TextUintptr added in v0.81.0

func TextUintptr(k encoding.TextMarshaler, v uintptr) kvp

func TextUintptrp added in v0.81.0

func TextUintptrp(k encoding.TextMarshaler, v *uintptr) kvp

Types

type KV added in v0.59.0

type KV interface {
	encoding.TextMarshaler
	json.Marshaler
}

type Log

type Log struct {
	Output  io.Writer                 // Output is a destination for output.
	Flag    int                       // Flag is a log properties.
	KV      []KV                      // Key-values.
	Func    []func() KV               // Func ia a dynamically calculated key-values. Existing kv will not overwritten by the dynamically calculated key-values.
	Keys    [4]encoding.TextMarshaler // Keys: 0 = original message; 1 = message excerpt; 2 = message trail; 3 = file path.
	Key     uint8                     // Key is a default/sticky message key: all except 1 = original message; 1 = message excerpt.
	Trunc   int                       // Maximum length of the message excerpt after which the message excerpt is truncated.
	Marks   [3][]byte                 // Marks: 0 = truncate; 1 = empty; 2 = blank.
	Replace [][2][]byte               // Replace ia a pairs of byte slices to replace in the message excerpt.
}

Log is a JSON logger/writer.

func GELF

func GELF() Log

GELF returns a GELF formater <https://docs.graylog.org/en/latest/pages/gelf.html>.

func (Log) Truncate added in v0.72.0

func (lg Log) Truncate(dst, src []byte) (int, error)

Truncate writes excerpt of the src to the dst and returns number of the written bytes and error if occurre.

func (Log) With added in v0.59.0

func (lg Log) With(kv ...KV) Log

With returns copy of the logger with additional key-values. Copy of the original key-values overwritten by the additional key-values.

func (Log) Write

func (lg Log) Write(src []byte) (int, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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