gologger

package module
v1.0.9 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 2025 License: MIT Imports: 8 Imported by: 2

README

gologger

GoLogger 是一个简单但功能强大的 Go 语言日志库,提供灵活的日志记录功能。它支持多种日志输出方式(控制台、文件等),并允许自定义日志格式。

特性

  • 支持多种日志级别:ERROR, WARN, INFO, DEBUG, TRACE
  • 支持多种输出方式:控制台、文件(支持滚动策略)
  • 可定制日志格式
  • 支持按类别记录日志

安装

go get github.com/yourusername/gologger

快速开始

package main

import (
	"github.com/yourusername/gologger"
)

func main() {
	// 获取默认logger
	logger := gologger.GetLogger("main")

	// 设置全局日志级别
	gologger.Configure(gologger.LoggersConfig{
		Level: "info",
		Appenders: []gologger.LogAppenderConfig{
			{
				Type: "console",
			},
			{
				Type: "file",
				Options: map[string]interface{}{
					"filePath": "app.log",
					"EnableRolling": true,
					"MaxSize": 1024 * 1024 * 10, // 10MB
				},
			},
		},
	})

	// 记录日志
	logger.Info("Application started")
	logger.Error("An error occurred")
}

配置说明

日志级别

支持的级别包括:off, error, warn, info, debug, trace

输出方式(Appenders)
  1. ConsoleAppender - 控制台输出 配置示例:

    {
     Type: "console",
    }
    
  2. FileAppender - 文件输出,支持滚动策略 配置参数:

    • filePath: 日志文件路径
    • EnableRolling: 是否启用滚动(默认true)
    • MaxSize: 单个文件最大大小(字节,默认10MB)
    • MaxAge: 文件最大保存时间(秒,默认86400秒=24小时)
格式化器

可以通过SelectFormatter选择不同的日志格式:

  • simple: 简单格式 [timestamp] level : category - message
  • json: JSON 格式输出

Documentation

Overview

Package gologger provides a simple logging implementation with multiple appenders and formatters. It supports console, file, and HTTP logging with customizable formats.

Package gologger provides a simple logging implementation with multiple appenders and formatters. It supports console, file, and HTTP logging with customizable formats.

Index

Constants

View Source
const (
	ErrorTemplate = "\033[1;31m%s\033[0m"
	WarnTemplate  = "\033[1;33m%s\033[0m"
	InfoTemplate  = "\033[1;32m%s\033[0m"
	DebugTemplate = "\033[1;34m%s\033[0m"
	TraceTemplate = "\033[1;35m%s\033[0m"
)
View Source
const (
	NoLog = iota
	Error
	Warn
	Info
	Debug
	Trace
)

Variables

This section is empty.

Functions

func Configure

func Configure(config LoggersConfig)

func ReconfigLoggers added in v1.0.7

func ReconfigLoggers(config LoggersConfig)

func RegistAppender

func RegistAppender(typeName string, appenderCreatCb func(LogAppenderConfig) *LoggerAppender)

Types

type ConsoleAppender

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

ConsoleAppender implements the LoggerAppender interface for console output. It uses color-coded templates for different log levels. Example:

appender := &ConsoleAppender{
  formatter: NewSimpleFormatter(),
}
appender.Append(event)
appender.Close()

func (*ConsoleAppender) Append

func (c *ConsoleAppender) Append(logEvent LogEvent)

func (*ConsoleAppender) Close

func (c *ConsoleAppender) Close()

Close implements LoggerAppender.

func (*ConsoleAppender) GetName

func (c *ConsoleAppender) GetName() string

type FileAppender

type FileAppender struct {

	// 新增滚动相关字段
	EnableRolling bool
	MaxSize       int64 // 文件最大大小(字节)
	MaxAge        int64 // 文件最大时间(秒)
	// contains filtered or unexported fields
}

FileAppender implements the LoggerAppender interface for file output. It supports log rotation based on file size and age. Example:

appender := &FileAppender{
  formatter: NewSimpleFormatter(),
  filePath: "app.log",
  EnableRolling: true,
  MaxSize: 1024 * 1024 * 10, // 10MB
}
appender.Append(event)
appender.Close()

func (*FileAppender) Append

func (f *FileAppender) Append(logEvent LogEvent)

func (*FileAppender) Close

func (f *FileAppender) Close()

Close implements LoggerAppender.

func (*FileAppender) GetName

func (f *FileAppender) GetName() string

type LogAppenderConfig

type LogAppenderConfig struct {
	Type      string                 `json:"type"`
	Formatter string                 `json:"formatter"`
	Options   map[string]interface{} `json:"options"`
}

type LogConfig

type LogConfig struct {
	Level     string   `json:"level"`
	Appenders []string `json:"appenders"`
}

type LogEvent

type LogEvent struct {
	Category string        `json:"category"`
	Ts       time.Time     `json:"ts"`
	Level    int           `json:"level"`
	Data     []interface{} `json:"data"`
}

type LogFormatter added in v1.0.6

type LogFormatter = func(LogEvent) string

LogFormatter is a function type that formats a LogEvent into a string. Example:

formatter := func(event LogEvent) string {
  return fmt.Sprintf("[%s] %s: %v", event.Ts.Format("2006-01-02"), event.Level, event.Data)
}

func SelectFormatter added in v1.0.6

func SelectFormatter(formatter string) LogFormatter

type Logger

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

Logger represents a logger instance for a specific category. It maintains the log level and appenders for that category. Example:

logger := GetLogger("mycategory")
logger.Info("This is an info message")
logger.Error("This is an error message")

func GetLogger

func GetLogger(name string) *Logger

func (*Logger) Debug

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

func (*Logger) Error

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

func (*Logger) Info

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

func (*Logger) Trace

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

func (*Logger) Warn

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

type LoggerAppender

type LoggerAppender interface {
	GetName() string
	Append(logEvent LogEvent)
	Close()
}

type LoggersConfig

type LoggersConfig struct {
	Appenders  map[string]LogAppenderConfig `json:"appenders"`
	Categories map[string]LogConfig         `json:"categories"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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