pre-dev: add logger
This commit is contained in:
No files matched your search
@@ -0,0 +1,66 @@
|
||||
// Package logger provides helper functions for logging
|
||||
package logger
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
lz "github.com/karincake/apem/logger-zerolog"
|
||||
d "github.com/karincake/dodol"
|
||||
l "github.com/karincake/lepet"
|
||||
)
|
||||
|
||||
type Event struct {
|
||||
// Context about the operation
|
||||
Feature string // Feature area, e.g. "Create"
|
||||
Action string // Action being performed, e.g. "DBCreate"
|
||||
Source string // Source of event, usually present in each use case
|
||||
Status string // e.g. "started", "failed", "success"
|
||||
|
||||
// Error context
|
||||
ErrInfo ErrorInfo
|
||||
}
|
||||
|
||||
type ErrorInfo struct {
|
||||
Code string // used in lang json
|
||||
Detail string
|
||||
Raw error
|
||||
}
|
||||
|
||||
func SetLogInfo(e Event, data any) {
|
||||
dataString, _ := json.Marshal(data)
|
||||
lz.O.Info().
|
||||
String("source", e.Source).
|
||||
String("feature", e.Feature).
|
||||
String("action", e.Action).
|
||||
String("status", "started").
|
||||
String("input", string(dataString)).
|
||||
Send()
|
||||
}
|
||||
|
||||
func SetLogError(e Event, data any) error {
|
||||
dataString, _ := json.Marshal(data)
|
||||
msg := l.I.Msg(e.ErrInfo.Code)
|
||||
|
||||
lz.O.Error().
|
||||
String("message", msg).
|
||||
String("source", e.Source).
|
||||
String("feature", e.Feature).
|
||||
String("action", e.Action).
|
||||
String("status", e.Status).
|
||||
String("error_code", e.ErrInfo.Code).
|
||||
String("error_detail", e.ErrInfo.Detail).
|
||||
String("data", string(dataString)).
|
||||
Send()
|
||||
|
||||
if err, ok := e.ErrInfo.Raw.(d.FieldError); ok {
|
||||
return err
|
||||
}
|
||||
if err, ok := e.ErrInfo.Raw.(d.FieldErrors); ok {
|
||||
return err
|
||||
}
|
||||
|
||||
if e.ErrInfo.Detail != "" {
|
||||
return d.FieldError{Code: e.ErrInfo.Code, Message: e.ErrInfo.Detail}
|
||||
}
|
||||
return d.FieldError{Code: e.ErrInfo.Code, Message: msg}
|
||||
}
|
||||
Reference in New Issue
Block a user