log

package module
v4.0.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2018 License: MIT Imports: 13 Imported by: 6

README

A simple structured logging

GoDoc

In general, this is another "bike" for logging with blackjack.

package log

import (
    "os"
    "time"

    "github.com/mdigger/log"
)

func main() {
    log.Info("info message")
    log.With("time", time.Now()).Debug("debug")
    log.Warn("warn", "time", time.Now(), "state", true)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Debug

func Debug(msg string, fields ...interface{})

Debug выводит отладочное сообщение в лог по умолчанию.

func Error

func Error(msg string, fields ...interface{})

Error выводит сообщение об ошибке в лог по умолчанию.

func Fatal

func Fatal(msg string, fields ...interface{})

Fatal выводит сообщение о критической ошибке в лог по умолчанию.

func Flag

func Flag() flag.Value

Flag возвращает лог по умолчанию в качестве значения для установки через параметры приложения.

func Info

func Info(msg string, fields ...interface{})

Info выводит информационное сообщение в лог по умолчанию.

func IsTTY

func IsTTY() bool

IsTTY возвращает true, если лог выводится в терминал или в файл.

func Log

func Log(lvl Level, msg string, fields ...interface{})

Log выводит сообщение с указанным уровнем в лог по умолчанию.

func SetFormat

func SetFormat(enc Encoder)

SetFormat переопределяет настройки формата вывода лога по умолчанию. Изначально из настроек задан только формат временной метки "2006-01-02 15:04:05". Все остальные настройки оставлены по умолчанию.

func SetLevel

func SetLevel(lvl Level)

SetLevel изменяет уровень фильтра для вывода сообщений в лог по умолчанию. Изначально фильтр установлен в DEBUG.

func SetOutput

func SetOutput(w io.Writer)

SetOutput переопределяет вывод лога по умолчанию. Изначально используется os.Stderr.

func StdLog

func StdLog(lvl Level, name string, fields ...interface{}) *log.Logger

StdLog возвращает обертку лога в стандартный.

func Trace

func Trace(msg string, fields ...interface{})

Trace выводит необязательное отладочное сообщение в лог по умолчанию.

func Warn

func Warn(msg string, fields ...interface{})

Warn выводит сообщение с предупреждением в лог по умолчанию.

Types

type Color

type Color struct {
	Levels    map[Level]string // переопределение строк для вывода уровня
	KeyIndent int              // отступ от значения дополнительного параметра
	NewLine   bool             // выводить атрибуты с новой строки
}

Color выводит лог в более удобном для чтения в консоли виде, используя цветовые выделения и помещая параметры на новую строку.

func (Color) Encode

func (f Color) Encode(entry *Entry) []byte

Encode форматирует в буфер запись лога для текстового консольного представления.

type Console

type Console struct {
	TimeFormat string           // формат вывода даты и времени
	UTC        bool             // вывод даты и времени в UTC
	Levels     map[Level]string // переопределение строк для вывода уровня
}

Console поддерживает текстовое представление лога.

func (Console) Encode

func (f Console) Encode(entry *Entry) []byte

Encode форматирует в буфер запись лога для текстового консольного представления.

type Encoder

type Encoder interface {
	Encode(entry *Entry) []byte
}

Encoder описывает интерфейс для форматирования записей лога. Используется Writer для задания формата. Данная библиотека содержит поддержку двух форматов логов: Console и JSON.

type Entry

type Entry struct {
	Timestamp time.Time // временная метка
	Level     Level     // уровень
	Category  string    // название раздела
	Message   string    // текст
	Fields    []Field   // дополнительные поля
}

Entry описывает запись в лог.

func NewEntry

func NewEntry(lvl Level, category, msg string, fields []Field) *Entry

NewEntry создает новое описание записи в лог.

func (*Entry) Free

func (e *Entry) Free()

Free помещает объект для формирования записи лога обратно в пул.

type Field

type Field struct {
	Name  string
	Value interface{}
}

Field описывает дополнительное именованное поле лога.

type Fields

type Fields = map[string]interface{}

Fields описывает список дополнительных полей.

type Handler

type Handler interface {
	Write(lvl Level, category, msg string, fields []Field) error
}

Handler описывает интерфейс для записи лога.

type JSON

type JSON struct{}

JSON формирует запись в лог в формате JSON.

func (JSON) Encode

func (f JSON) Encode(entry *Entry) []byte

Encode возвращает представление записи в лог в формате JSON.

type Level

type Level int8

Level задает уровень записи лога.

const (
	TRACE Level = (iota - 2) << 5 // -64
	DEBUG                         // -32
	INFO                          // 0
	WARN                          // 32
	ERROR                         // 64
	FATAL                         // 96
)

Предопределенные уровни сообщений для записи в лог.

func GetLevel

func GetLevel() Level

GetLevel возвращает текущий уровень лога по умолчанию.

func (Level) String

func (l Level) String() string

String возвращает название группы уровней записи лога:

""      [-128...-65]
"TRACE" [-64...-33]
"DEBUG" [-32...-1]
"INFO"  [0...31]
"WARN"  [32...63]
"ERROR" [64...95]
"FATAL" [96...127]

type Logger

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

Logger описывает именованный раздел лога.

func New

func New(name string, fields ...interface{}) *Logger

New возвращает новый именованный раздел лога по умолчанию.

func NewLogger

func NewLogger(h Handler) *Logger

NewLogger возвращает новый лог с указанным обработчиком.

func With

func With(fields ...interface{}) *Logger

With возвращает новую запись в лог с дополнительными параметрами.

func (*Logger) Debug

func (l *Logger) Debug(msg string, fields ...interface{})

Debug записывает в лог отладочное сообщение.

func (*Logger) Error

func (l *Logger) Error(msg string, fields ...interface{})

Error записывает в лог сообщение с ошибкой.

func (*Logger) Fatal

func (l *Logger) Fatal(msg string, fields ...interface{})

Fatal записывает в лог сообщение с критической ошибкой.

func (*Logger) Info

func (l *Logger) Info(msg string, fields ...interface{})

Info записывает в лог информационное сообщение.

func (*Logger) Log

func (l *Logger) Log(lvl Level, msg string, fields ...interface{})

Log добавляет запись в лог с указанным уровнем.

func (*Logger) New

func (l *Logger) New(name string, fields ...interface{}) *Logger

New возвращает новый именованный раздел лога. Новое имя будет добавлено к имени предыдущего раздела лога с разделителем ".".

func (*Logger) StdLog

func (l *Logger) StdLog(lvl Level) *log.Logger

StdLog возвращает обертку лога в стандартный. В качестве параметров указывается уровень сообщений, который будет использоваться по умолчанию для всех записей лога.

func (*Logger) Trace

func (l *Logger) Trace(msg string, fields ...interface{})

Trace записывает в лог сообщение с уровнем ниже отладочного.

func (*Logger) Warn

func (l *Logger) Warn(msg string, fields ...interface{})

Warn записывает в лог сообщение с предупреждением.

func (*Logger) With

func (l *Logger) With(fields ...interface{}) *Logger

With возвращает запись лога с частично заполненными дополнительными полями. В качестве именованных параметров можно использовать последовательное перечисление имен (строк) и соответствующих значений или непосредственно список имен со значениями в виде Field. Отдельно обрабатываются ошибки, которые тоже могут быть переданы без имени параметра: в этом случае будет использовано имя "error", если ошибка не пустая. Если вы ошиблись и для последнего элемента не задали значение, то такой элемент будет проигнорирован. Эти правила действительны и для всех методов Logger.

type Source

type Source struct {
	Pkg  string // библиотека
	Func string // название функции
	File string // имя файла
	Line int    // номер строки
}

Source описывает информацию об исходном файле с кодом.

func (Source) String

func (s Source) String() string

String возвращает строку с исходным файлом и номером строки.

type StackError

type StackError struct {
	Err   error    // оригинальная ошибка
	Stack []Source // стек вызовов
}

StackError описывает стандартную ошибку с добавлением информации о стеке вызовов.

func NewError

func NewError(err error) *StackError

NewError формирует новую ошибку, добавляя информацию о стеке вызовов.

func (*StackError) Error

func (e *StackError) Error() string

Error возвращает строковое описание ошибки.

type Writer

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

Writer описывает обработчик лога, записывающего в файл, консоль или другой поток.

func NewWriter

func NewWriter(w io.Writer, lvl Level, enc Encoder) *Writer

NewWriter возвращает новый обработчик лога.

func (*Writer) IsTTY

func (h *Writer) IsTTY() bool

IsTTY возвращает true, если поток является терминалом или файлом.

func (*Writer) Set

func (h *Writer) Set(opt string) error

Set устанавливает уровень и формат вывода лога.

func (*Writer) SetFormat

func (h *Writer) SetFormat(enc Encoder)

SetFormat задает свойства форматирования записей лога.

func (*Writer) SetLevel

func (h *Writer) SetLevel(lvl Level)

SetLevel устанавливает новый минимальный уровень для вывода в лог.

func (*Writer) SetOutput

func (h *Writer) SetOutput(w io.Writer)

SetOutput переопределяет вывод лога. Если nil, то лог выводиться не будет.

func (*Writer) String

func (h *Writer) String() string

String возвращает уровень и формат вывода лога.

func (*Writer) Write

func (h *Writer) Write(lvl Level, category, msg string, fields []Field) error

Write поддерживает интерфейс записи логов Handler.

Jump to

Keyboard shortcuts

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