gologger

package module
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2025 License: ISC Imports: 10 Imported by: 1

README

GoLogger

GoLogger is a flexible and configurable logging library for Go, designed to support both development and production environments. It provides various logging levels, customizable time formats, and file-based logging with different layouts.

Features

  • Multiple logging levels: Debug, Info, Warn, Error, Panic
  • Configurable for development and production environments
  • Supports standard and Jalaali time formats
  • Customizable log file paths, prefixes, extensions, and layouts
  • Buffered logging for performance
  • Silent mode for disabling logging output

Installation

To install GoLogger, use go get:

go get github.com/mekramy/gologger

Usage

Creating a Logger

You can create a logger using the LoggerBuilder:

import "github.com/mekramy/gologger"

func main() {
    logger, err := gologger.NewLogger().
        SetBufferSize(200).
        Production().
        Simple().
        Path("/var/logs").
        Prefix("app ").
        Extension("log").
        Daily().
        StdFormatter().
        Logger()
    if err != nil {
        panic(err)
    }
    defer logger.Sync()

    logger.Info(gologger.LogOptions{Message: "Application started"})
}
Logging Levels

GoLogger supports various logging levels:

logger.Debug(
    gologger.With("Name", "John Doe"),
    gologger.With("Age", 20),
    gologger.WithMessage("Something happend at POST requests!"),
)
logger.Info(...)
logger.Warn(...)
logger.Error(...)
logger.Panic(...)

API Documentation

Logger Interface

The Logger interface defines methods for logging at various levels:

  • Debug(options ...LogOptions): Creates a new debug level log entry. Intended for development environments.
  • Info(options ...LogOptions): Creates a new info level log entry.
  • Warn(options ...LogOptions): Creates a new warn level log entry.
  • Error(options ...LogOptions): Creates a new error level log entry.
  • Panic(options ...LogOptions): Creates a new panic level log entry.
  • Sync(): Flushes any buffered log entries. Should be called before the application exits to ensure all logs are written.
LoggerBuilder

The LoggerBuilder is used to configure and create a Logger instance:

  • NewLogger() *LoggerBuilder: Creates a new LoggerBuilder with default settings.
  • SetBufferSize(size uint) *LoggerBuilder: Sets the buffer size for the logger's queue.
  • Development() *LoggerBuilder: Sets the logger to development mode.
  • Production() *LoggerBuilder: Sets the logger to production mode.
  • Simple() *LoggerBuilder: Sets the logger to use a simple format.
  • Structured() *LoggerBuilder: Sets the logger to use a structured format.
  • Silent() *LoggerBuilder: Sets the logger to be silent.
  • Path(root string) *LoggerBuilder: Sets the root directory for log files.
  • Prefix(prefix string) *LoggerBuilder: Sets the prefix for log file names.
  • Extension(ext string) *LoggerBuilder: Sets the extension for log file names.
  • Daily() *LoggerBuilder: Sets the log file layout to daily.
  • Monthly() *LoggerBuilder: Sets the log file layout to monthly.
  • CustomLayout(layout string) *LoggerBuilder: Sets a custom layout for log file names.
  • StdFormatter() *LoggerBuilder: Sets the logger to use the standard time formatter.
  • JalaaliFormatter() *LoggerBuilder: Sets the logger to use the Jalaali time formatter.
  • CustomFormatter(formatter TimeFormatter) *LoggerBuilder: Sets a custom time formatter for the logger.
  • Logger() (Logger, error): Creates and returns a Logger instance based on the builder's configuration.
TimeFormatter

The TimeFormatter function signature is used for custom time formatting:

  • StdFormatter(ts time.Time, layout string) string: Standard time formatter instance.
  • JalaaliFormatter(ts time.Time, layout string) string: Jalaali time formatter instance.
LogOptions

The LogOptions is option pattern designed for passing parameter to log.

Example
func main(){
    logger.Info(
        gologger.With("error", "Something happend!")
    )
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func JalaaliFormatter

func JalaaliFormatter(ts time.Time, layout string) string

JalaaliFormatter jalaali time formatter instance.

func StdFormatter

func StdFormatter(ts time.Time, layout string) string

StdFormatter standard time formatter instance.

Types

type Level

type Level string

Log levers.

type Log

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

type LogOptions

type LogOptions func(*Log)

func With

func With(key string, value any) LogOptions

With add extra data to log.

func WithMessage

func WithMessage(msg string) LogOptions

WithMessage add message to log.

type Logger

type Logger interface {
	// Debug creates a new debug level log entry.
	// This method is intended to be used in development environments only.
	Debug(options ...LogOptions)

	// Info creates a new info level log entry.
	Info(options ...LogOptions)

	// Warn creates a new warn level log entry.
	Warn(options ...LogOptions)

	// Error creates a new error level log entry.
	Error(options ...LogOptions)

	// Panic creates a new panic level log entry.
	Panic(options ...LogOptions)

	// Sync flushes any buffered log entries.
	// It should be called before the application exits to ensure all logs are written.
	Sync()
}

Logger is an interface that defines methods for logging at various levels. It supports different modes for production and development environments.

type LoggerBuilder

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

LoggerBuilder is a builder for configuring and creating a Logger instance.

func NewLogger

func NewLogger() *LoggerBuilder

NewLogger creates a new LoggerBuilder with default settings.

func (*LoggerBuilder) CustomFormatter

func (b *LoggerBuilder) CustomFormatter(formatter TimeFormatter) *LoggerBuilder

CustomFormatter sets a custom time formatter for the logger. Empty input will be ignored.

func (*LoggerBuilder) CustomLayout

func (b *LoggerBuilder) CustomLayout(layout string) *LoggerBuilder

CustomLayout sets a custom layout for log file names. Empty input will be ignored.

func (*LoggerBuilder) Daily

func (b *LoggerBuilder) Daily() *LoggerBuilder

Daily sets the log file layout to daily.

func (*LoggerBuilder) Development

func (b *LoggerBuilder) Development() *LoggerBuilder

Development sets the logger to development mode.

func (*LoggerBuilder) Extension

func (b *LoggerBuilder) Extension(ext string) *LoggerBuilder

Extension sets the extension for log file names. Empty input will be ignored.

func (*LoggerBuilder) JalaaliFormatter

func (b *LoggerBuilder) JalaaliFormatter() *LoggerBuilder

JalaaliFormatter sets the logger to use the Jalaali time formatter.

func (*LoggerBuilder) Logger

func (b *LoggerBuilder) Logger() (Logger, error)

Logger creates and returns a Logger instance based on the builder's configuration.

func (*LoggerBuilder) Monthly

func (b *LoggerBuilder) Monthly() *LoggerBuilder

Monthly sets the log file layout to monthly.

func (*LoggerBuilder) Path

func (b *LoggerBuilder) Path(root string) *LoggerBuilder

Path sets the root directory for log files. Empty input will be ignored.

func (*LoggerBuilder) Prefix

func (b *LoggerBuilder) Prefix(prefix string) *LoggerBuilder

Prefix sets the prefix for log file names. Empty input will be ignored.

func (*LoggerBuilder) Production

func (b *LoggerBuilder) Production() *LoggerBuilder

Production sets the logger to production mode.

func (*LoggerBuilder) SetBufferSize

func (b *LoggerBuilder) SetBufferSize(size uint) *LoggerBuilder

SetBufferSize sets the buffer size for the logger's queue.

func (*LoggerBuilder) Silent

func (b *LoggerBuilder) Silent() *LoggerBuilder

Silent sets the logger to be silent.

func (*LoggerBuilder) Simple

func (b *LoggerBuilder) Simple() *LoggerBuilder

Simple sets the logger to use a simple format.

func (*LoggerBuilder) StdFormatter

func (b *LoggerBuilder) StdFormatter() *LoggerBuilder

StdFormatter sets the logger to use the standard time formatter.

func (*LoggerBuilder) Structured

func (b *LoggerBuilder) Structured() *LoggerBuilder

Structured sets the logger to use a structured format.

type TimeFormatter

type TimeFormatter func(t time.Time, layout string) string

TimeFormatter function signature for time formatter

Jump to

Keyboard shortcuts

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