logger

package
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Mar 29, 2026 License: MIT Imports: 9 Imported by: 0

README

Logger Package

The logger package provides a standardized, high-performance structured logging implementation built on top of go.uber.org/zap. It also provides modular extensions for error tracking via Sentry and pushing logs over HTTP.

Architecture Flow

  1. Core Processing: The logger constructs a customized zap.Logger using a unified Config and the functional options pattern.
  2. Output Multiplexing: Log entries are piped through a zapcore.Tee structure:
    • stdout: Standard console output equipped with a JSON format encoder, caller skipping, and stack traces on error.
    • HTTP Hook (Optional): If configured, log entries are broadcasted via HTTP POST to the specified HTTPHookURL.
    • Sentry Hook (Optional): If EnableSentry is enabled, entries at the ERROR or FATAL level are caught and forwarded directly to the configured Sentry DSN.

Usage

import "github.com/besanh/go-library/logger"
1. Basic Initialization

Initialize the logger with standard console output at INFO level.

log, err := logger.NewLogger(
    func(c *logger.Config) {
        c.Level = logger.INFO_LEVEL
        c.ServiceName = "my-service"
    },
)
if err != nil {
    panic(err)
}

log.Info("Service started")
2. Integration with Sentry

Configure the logger to broadcast ERROR level occurrences directly to Sentry.

log, err := logger.NewLogger(
    func(c *logger.Config) {
        c.Level = logger.DEBUG_LEVEL
        c.ServiceName = "user-service"
        c.EnableSentry = true
        c.SentryDSN = "https://example@sentry.io/123"
    },
)

// This will be logged to stdout AND captured as an event in Sentry
log.Errorf("Failed to connect to database: %v", dbErr)
3. Integration with HTTP Hooks

Configure the logger to pipe its JSON output to an external HTTP sink.

log, err := logger.NewLogger(
    func(c *logger.Config) {
        c.Level = logger.INFO_LEVEL
        c.HTTPHookURL = "https://my-log-collector.internal/ingest"
    },
)
// Logs will now be JSON-encoded and POSTed to the HTTPHookURL

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	INFO_LEVEL  string = "info"
	DEBUG_LEVEL string = "debug"
	WARN_LEVEL  string = "warn"
	ERROR_LEVEL string = "error"
	FATAL_LEVEL string = "fatal"
)

Functions

func BuildFields added in v0.1.0

func BuildFields(args ...any) []zap.Field

Types

type Config added in v0.1.0

type Config struct {
	Level        string
	EnableSentry bool
	SentryDSN    string
	HTTPHookURL  string
	ServiceName  string
}

type ILogger

type ILogger interface {
	Info(msg string, fields ...any)
	Error(msg string, fields ...any)
	Debug(msg string, fields ...any)
	Warn(msg string, fields ...any)
	Fatal(msg string, fields ...any)
}

func NewLogger

func NewLogger(opts ...Option) (ILogger, error)

type MockILogger

type MockILogger struct {
	mock.Mock
}

MockILogger is an autogenerated mock type for the ILogger type

func NewMockILogger

func NewMockILogger(t interface {
	mock.TestingT
	Cleanup(func())
}) *MockILogger

NewMockILogger creates a new instance of MockILogger. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. The first argument is typically a *testing.T value.

func (*MockILogger) Debug

func (_m *MockILogger) Debug(msg string, fields ...any)

Debug provides a mock function with given fields: msg, fields

func (*MockILogger) EXPECT

func (_m *MockILogger) EXPECT() *MockILogger_Expecter

func (*MockILogger) Error

func (_m *MockILogger) Error(msg string, fields ...any)

Error provides a mock function with given fields: msg, fields

func (*MockILogger) Fatal

func (_m *MockILogger) Fatal(msg string, fields ...any)

Fatal provides a mock function with given fields: msg, fields

func (*MockILogger) Info

func (_m *MockILogger) Info(msg string, fields ...any)

Info provides a mock function with given fields: msg, fields

func (*MockILogger) Warn

func (_m *MockILogger) Warn(msg string, fields ...any)

Warn provides a mock function with given fields: msg, fields

type MockILogger_Debug_Call

type MockILogger_Debug_Call struct {
	*mock.Call
}

MockILogger_Debug_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Debug'

func (*MockILogger_Debug_Call) Return

func (*MockILogger_Debug_Call) Run

func (_c *MockILogger_Debug_Call) Run(run func(msg string, fields ...any)) *MockILogger_Debug_Call

func (*MockILogger_Debug_Call) RunAndReturn

func (_c *MockILogger_Debug_Call) RunAndReturn(run func(string, ...any)) *MockILogger_Debug_Call

type MockILogger_Error_Call

type MockILogger_Error_Call struct {
	*mock.Call
}

MockILogger_Error_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Error'

func (*MockILogger_Error_Call) Return

func (*MockILogger_Error_Call) Run

func (_c *MockILogger_Error_Call) Run(run func(msg string, fields ...any)) *MockILogger_Error_Call

func (*MockILogger_Error_Call) RunAndReturn

func (_c *MockILogger_Error_Call) RunAndReturn(run func(string, ...any)) *MockILogger_Error_Call

type MockILogger_Expecter

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

func (*MockILogger_Expecter) Debug

func (_e *MockILogger_Expecter) Debug(msg interface{}, fields ...interface{}) *MockILogger_Debug_Call

Debug is a helper method to define mock.On call

  • msg string
  • fields ...any

func (*MockILogger_Expecter) Error

func (_e *MockILogger_Expecter) Error(msg interface{}, fields ...interface{}) *MockILogger_Error_Call

Error is a helper method to define mock.On call

  • msg string
  • fields ...any

func (*MockILogger_Expecter) Fatal

func (_e *MockILogger_Expecter) Fatal(msg interface{}, fields ...interface{}) *MockILogger_Fatal_Call

Fatal is a helper method to define mock.On call

  • msg string
  • fields ...any

func (*MockILogger_Expecter) Info

func (_e *MockILogger_Expecter) Info(msg interface{}, fields ...interface{}) *MockILogger_Info_Call

Info is a helper method to define mock.On call

  • msg string
  • fields ...any

func (*MockILogger_Expecter) Warn

func (_e *MockILogger_Expecter) Warn(msg interface{}, fields ...interface{}) *MockILogger_Warn_Call

Warn is a helper method to define mock.On call

  • msg string
  • fields ...any

type MockILogger_Fatal_Call

type MockILogger_Fatal_Call struct {
	*mock.Call
}

MockILogger_Fatal_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Fatal'

func (*MockILogger_Fatal_Call) Return

func (*MockILogger_Fatal_Call) Run

func (_c *MockILogger_Fatal_Call) Run(run func(msg string, fields ...any)) *MockILogger_Fatal_Call

func (*MockILogger_Fatal_Call) RunAndReturn

func (_c *MockILogger_Fatal_Call) RunAndReturn(run func(string, ...any)) *MockILogger_Fatal_Call

type MockILogger_Info_Call

type MockILogger_Info_Call struct {
	*mock.Call
}

MockILogger_Info_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Info'

func (*MockILogger_Info_Call) Return

func (*MockILogger_Info_Call) Run

func (_c *MockILogger_Info_Call) Run(run func(msg string, fields ...any)) *MockILogger_Info_Call

func (*MockILogger_Info_Call) RunAndReturn

func (_c *MockILogger_Info_Call) RunAndReturn(run func(string, ...any)) *MockILogger_Info_Call

type MockILogger_Warn_Call

type MockILogger_Warn_Call struct {
	*mock.Call
}

MockILogger_Warn_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Warn'

func (*MockILogger_Warn_Call) Return

func (*MockILogger_Warn_Call) Run

func (_c *MockILogger_Warn_Call) Run(run func(msg string, fields ...any)) *MockILogger_Warn_Call

func (*MockILogger_Warn_Call) RunAndReturn

func (_c *MockILogger_Warn_Call) RunAndReturn(run func(string, ...any)) *MockILogger_Warn_Call

type Option

type Option func(*Config)

func WithHTTPHook

func WithHTTPHook(url string) Option

func WithLevel

func WithLevel(level string) Option

func WithSentry added in v0.1.0

func WithSentry(dsn string) Option

func WithServiceName added in v0.1.0

func WithServiceName(name string) Option

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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