struct_logger

package module
v0.4.1 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2025 License: Apache-2.0 Imports: 5 Imported by: 13

README

go-service-base/structured-logger

Image

Example
var Logger *slog.Logger

useUTC, _ := strconv.ParseBool(os.Getenv("LOG_TIME_UTC"))

recordTime := NewRecordTime(os.Getenv("LOG_TIME_FORMAT"), useUTC)

options := &slog.HandlerOptions{
	AddSource:   false,
	Level:       GetLevel(os.Getenv("LOG_LEVEL"), slog.LevelWarn),
	ReplaceAttr: recordTime.ReplaceAttr,
}

handler := GetHandler(os.Getenv("LOG_HANDLER"), os.Stdout, options, slog.Default().Handler())
handler = handler.WithAttrs([]slog.Attr{
    slog.String(attribute.ProjectAttrKey, "my-project"),
})

Logger = slog.New(handler)

Logger.Info("hello", slog.String("user", os.Getenv("USER")))

Documentation

Index

Constants

View Source
const (
	LevelDebug = "debug"
	LevelInfo  = "info"
	LevelWarn  = "warn"
	LevelError = "error"
)
View Source
const (
	TextHandlerSelector    = "text"
	JsonHandlerSelector    = "json"
	DiscardHandlerSelector = "discard"
)

Variables

This section is empty.

Functions

func GetHandler

func GetHandler(value string, writer io.Writer, opts *slog.HandlerOptions, defaultHandler slog.Handler) slog.Handler

func GetLevel

func GetLevel(value string, defaultLevel slog.Leveler) slog.Leveler

func GetLogFile

func GetLogFile(filePath string, filePerm os.FileMode) (io.WriteCloser, error)

func New

func New(c Config, out io.Writer, organization, project string) *slog.Logger

func TimeUTCReplaceAttr

func TimeUTCReplaceAttr(_ []string, a slog.Attr) slog.Attr

func TimeUTCValue

func TimeUTCValue(t time.Time) slog.Value

Types

type Config

type Config struct {
	Handler    string `json:"handler" env_var:"LOGGER_HANDLER"`
	Level      string `json:"level" env_var:"LOGGER_LEVEL"`
	TimeFormat string `json:"time_format" env_var:"LOGGER_TIME_FORMAT"`
	TimeUtc    bool   `json:"time_utc" env_var:"LOGGER_TIME_UTC"`
	FilePath   string `json:"file_path" env_var:"LOGGER_FILE_PATH"`
	AddSource  bool   `json:"add_source" env_var:"LOGGER_ADD_SOURCE"`
	AddMeta    bool   `json:"add_meta" env_var:"LOGGER_ADD_META"`
}

type RecordTime

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

func NewRecordTime

func NewRecordTime(format string, utc bool) *RecordTime

func (*RecordTime) ReplaceAttr

func (r *RecordTime) ReplaceAttr(_ []string, a slog.Attr) slog.Attr

func (*RecordTime) Value

func (r *RecordTime) Value(v slog.Value) slog.Value

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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