Skip to content

gofiddle/log

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Log

Build Status

Log is an easy to use golang logging library. It supports level based and asynchronized logging. It's designed to be used as a drop-in replacement of the standard log package

Getting Started

Install

go get github.com/gofiddle/log

Log to File

Create a logger which writes to a log file.

package main

import "github.com/gofiddle/log"

func main() {
	logger, err := log.NewFileLogger("/var/log", "gofiddle", log.LOG_LEVEL_INFO)
	if err != nil {
		panic(err)
	}
	defer logger.Close()
	logger.Trace("This is a trace message.")
	logger.Debug("This is a debug message.")
	logger.Info("Hello World!")
	logger.Warn("This is a warnning message.")
	logger.Error("This is an error message.")
}

Log to an HTTP Server

Create a logger which writes to a http log server.

package main

import "github.com/gofiddle/log"

func startLogServer() {
	// Let's start a simple http log server on port 8080
	// ...
}

func main() {
	startLogServer()
	logger := log.NewHTTPLogger("http://example.com:8080/log", log.LOG_LEVEL_INFO)
	logger.Trace("This is a trace message.")
	logger.Debug("This is a debug message.")
	logger.Info("Hello World!")
	logger.Warn("This is a warnning message.")
	logger.Error("This is an error message.")
}

Run it on GoFiddle

Provide your own LogWriter

package main

import (
	"os"

	"github.com/gofiddle/log"
)

func main() {
	logger, err := log.New(os.Stdout, log.LOG_LEVEL_INFO)
	logger.Trace("This is a trace message.")
	logger.Debug("This is a debug message.")
	logger.Info("Hello World!")
	logger.Warn("This is a warnning message.")
	logger.Error("This is an error message.")
}

Run it on GoFiddle

Provide your own LogWriter and make it logging asynchronizedly

package main

import (
	"os"
	"time"

	"github.com/gofiddle/log"
)

func main() {
	logger := log.New(log.NewAsyncLogWriter(os.Stdout, log.DEFAULT_QUEUE_SIZE), log.LOG_LEVEL_INFO)
	logger.Trace("This is a trace message.")
	logger.Debug("This is a debug message.")
	logger.Info("Hello World!")
	logger.Warn("This is a warnning message.")
	logger.Error("This is an error message.")

	// Wait for 3 seconds to let the writer finish writing logs
	<-time.After(time.Second * 3)
}

Run it on GoFiddle

Customize log format

By default, the logger will format the log message to something like this: "INFO: 2006-01-02T15:04:05 (UTC): log message...", you can customize the format by providing your own formatter after created the logger.

package main

import "github.com/gofiddle/log"

type MyLogFormatter struct {}

func (f *MyLogFormatter) Format(t time.Time, level int, message string) string {
	... customize the message
	return msg
}

func main() {
	logger := log.New(NewAsyncLogWriter(os.Stdout), log.LOG_LEVEL_INFO)
	logger.SetFormatter(&MyLogFormatter{})
	
	logger.Trace("This is a trace message.")
	logger.Debug("This is a debug message.")
	logger.Info("Hello World!")
	logger.Warn("This is a warnning message.")
	logger.Error("This is an error message.")
}

Run it on GoFiddle

Author and Maintainer

Acknowledgement

Thanks Dave Cheney @davecheney and Xing Xing @mikespook help reviewing the code and giving me feedbacks!

License

MIT License

About

An easy to use golang logging library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages