logging

package module
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Dec 31, 2017 License: MIT Imports: 9 Imported by: 0

README

Golang logging library


godoc build

Package logging implements a logging infrastructure. It supports different MessageHandler like StreamHandler for console and FileHandler for file output; Every MessageHandler can have different MessageFormatter and MessageFilter.

Example

example

package main

import (
	"github.com/gamelife1314/logging"
	"os"
)

func main() {
	logger := logging.GetDefaultLogger()
	logger.Debug("hello world, %s", "logging")
	logger.Info("hello world, %s", "logging")
	logger.Notice("hello world, %s", "logging")
	logger.Warning("hello world, %s", "logging")
	logger.Error("hello world, %s", "logging")
	logger.Critical("hello world, %s", "logging")

	logFile, _ := os.OpenFile("log.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
	defer logFile.Close()
	logger2 := &logging.Logger{
		Level: logging.DEBUG,
		StreamHandler: &logging.StreamMessageHandler{
			Level: logging.DEBUG,
			Formatter: &logging.MessageFormatter{
				Format:     `{{.Color}}[{{.Time}}] {{.LevelString | printf "%8s"}}  {{.FuncName}} {{.ShortFileName}} {{.Line}} {{.ColorClear}} {{.Message}}`,
				TimeFormat: "2006-01-02 15:04:05",
			},
			Destination: os.Stdout,
		},
		FileHandler: &logging.FileMessageHandler{
			Level: logging.ERROR,
			Formatter: &logging.MessageFormatter{
				Format: "[{{.Time}}] {{.LevelString}}  {{.Pid}} {{.Program}} {{.FuncName}} {{.LongFileName}} {{.Line}}{{.Message}}\n",
			},
			Destination: logFile,
		},
	}
	logger2.Debug("hello world")
}

Installing


  1. using go get, go get github.com/gamelife1314/logging

  2. update: go get -u github.com/gamelife1314/logging

Documentation


  1. see http://godoc.org/github.com/gamelife1314/logging

  2. or run command: godoc github.com/gamelife1314/logging

Documentation

Overview

* Package logging implements a logging infrastructure. It supports different MessageHandler like StreamHandler for console and FileHandler for file output; Every MessageHandler can have different MessageFormatter and MessageFilter.

Index

Constants

View Source
const (
	ColorRed     // red
	ColorGreen   // green
	ColorYellow  // yellow
	ColorBlue    // blue
	ColorMagenta // magenta

	ColorWhite // white
)
View Source
const (
	NOTSET   = iota
	DEBUG    = MessageLevel(10 * iota) // DEBUG = 10
	INFO     = MessageLevel(10 * iota) // INFO = 20
	NOTICE   = MessageLevel(10 * iota) // INFO = 30
	WARNING  = MessageLevel(10 * iota) // WARNING = 40
	ERROR    = MessageLevel(10 * iota) // ERROR = 50
	CRITICAL = MessageLevel(10 * iota) // CRITICAL = 60
)

MessageLevel

View Source
const LevelColorSeqClear = "\033[0m"

Variables

View Source
var LevelColorFlag = []string{
	DEBUG:    levelColorSeq(ColorBlue, 0),
	INFO:     levelColorSeq(ColorGreen, 0),
	NOTICE:   levelColorSeq(ColorWhite, 0),
	WARNING:  levelColorSeq(ColorYellow, 0),
	ERROR:    levelColorSeq(ColorRed, 1),
	CRITICAL: levelColorSeq(ColorMagenta, 1),
}

LevelColorFlag, MessageLevel color flag.

View Source
var LevelString = map[MessageLevel]string{
	DEBUG:    "DEBUG",
	INFO:     "INFO",
	NOTICE:   "NOTICE",
	WARNING:  "WARNING",
	ERROR:    "ERROR",
	CRITICAL: "CRITICAL",
}

LevelString, MessageLevel string.

Functions

This section is empty.

Types

type FileMessageHandler

type FileMessageHandler struct {
	Level       MessageLevel
	Filter      MessageFilter
	Formatter   *MessageFormatter
	Destination io.Writer
}

logging.FileMessageHandler

func (FileMessageHandler) Write

func (handler FileMessageHandler) Write(message []byte)

type Logger

type Logger struct {
	Level         MessageLevel          // continue only message level gte Level
	Filter        MessageFilter         // logger message filter, you can define it as your will.
	Record        *MessageRecord        // message entity, you must not instance it.
	StreamHandler *StreamMessageHandler // StreamMessageHandler
	FileHandler   *FileMessageHandler   // FileMessageHandler
}

Logger, define logger entity.

func GetDefaultLogger

func GetDefaultLogger() *Logger

logging.GetDefaultLogger, return a default logger object.

func (*Logger) Critical

func (l *Logger) Critical(format string, a ...interface{})

Logger.Critical, record CRITICAL message.

func (*Logger) Debug

func (l *Logger) Debug(format string, a ...interface{})

Logger.Debug, record DEBUG message.

func (*Logger) Error

func (l *Logger) Error(format string, a ...interface{})

Logger.Error, record ERROR message.

func (*Logger) Info

func (l *Logger) Info(format string, a ...interface{})

Logger.Info, record INFO message.

func (*Logger) Notice

func (l *Logger) Notice(format string, a ...interface{})

Logger.Notice, record INFO message.

func (*Logger) Warning

func (l *Logger) Warning(format string, a ...interface{})

Logger.Warning, record WARNING message.

type MessageFilter

type MessageFilter func(logger *Logger) bool

logging.MessageFilter, for message filter.

type MessageFormatter

type MessageFormatter struct {

	// Message Format, you can use any fields of MessageRecord.
	// Example: {{.Color}}[{{.Time}}] {{.LevelString}}  {{.FuncName}} {{.ShortFileName}} {{.Line}} {{.ColorClear}} {{.Message}}\n
	Format string

	// Message Time Format
	// Default: time.RFC1123
	TimeFormat string
}

logging.MessageFormatter

func (*MessageFormatter) GetMessage

func (formatter *MessageFormatter) GetMessage(logger *Logger) string

logging.MessageFormatter.GetMessage, return formatted message string for output.

type MessageHandler

type MessageHandler interface {
	Write(message []byte)
}

type MessageLevel

type MessageLevel int

type MessageRecord

type MessageRecord struct {
	Level         MessageLevel
	LevelString   string
	Message       string
	Pid           int
	Program       string
	Time          string
	FuncName      string
	LongFileName  string
	ShortFileName string
	Line          int
	Color         string
	ColorClear    string
}

logging.MessageRecord

func GetMessageRecord

func GetMessageRecord(level MessageLevel, format string, a ...interface{}) *MessageRecord

logging.getMessageRecord, make a record and return it's reference.

type StreamMessageHandler

type StreamMessageHandler struct {
	Level       MessageLevel
	Filter      MessageFilter
	Formatter   *MessageFormatter
	Destination io.Writer
}

logging.StreamMessageHandler

func (StreamMessageHandler) Write

func (handler StreamMessageHandler) Write(message []byte)

Jump to

Keyboard shortcuts

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