structured_logger

package module
v0.4.0 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: 0

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 added in v0.4.0

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 added in v0.4.0

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