mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-22 08:18:29 +02:00
refactor(errs): migrate from gperr.Error to standard Go error interface
This is a large-scale refactoring across the codebase that replaces the custom `gperr.Error` type with Go's standard `error` interface. The changes include: - Replacing `gperr.Error` return types with `error` in function signatures - Using `errors.New()` and `fmt.Errorf()` instead of `gperr.New()` and `gperr.Errorf()` - Using `%w` format verb for error wrapping instead of `.With()` method - Replacing `gperr.Subject()` calls with `gperr.PrependSubject()` - Converting error logging from `gperr.Log*()` functions to zerolog's `.Err().Msg()` pattern - Update NewLogger to handle multiline error message - Updating `goutils` submodule to latest commit This refactoring aligns with Go idioms and removes the dependency on custom error handling abstractions in favor of standard library patterns.
This commit is contained in:
@@ -87,8 +87,28 @@ func multiWriter(out ...io.Writer) io.Writer {
|
||||
|
||||
func NewLogger(out ...io.Writer) zerolog.Logger {
|
||||
writer := zerolog.NewConsoleWriter(func(w *zerolog.ConsoleWriter) {
|
||||
w.Out = diodeMultiWriter(out...)
|
||||
if !common.IsTest {
|
||||
w.Out = diodeMultiWriter(out...)
|
||||
} else {
|
||||
w.Out = multiWriter(out...)
|
||||
}
|
||||
w.TimeFormat = timeFmt
|
||||
w.FormatPrepare = func(evt map[string]any) error {
|
||||
// move error field to join message if it's multiline
|
||||
if err, ok := evt[zerolog.ErrorFieldName].(string); ok {
|
||||
if strings.Count(err, "\n") == 0 {
|
||||
return nil
|
||||
}
|
||||
msg, ok := evt[zerolog.MessageFieldName].(string)
|
||||
if ok && msg != "" {
|
||||
evt[zerolog.MessageFieldName] = msg + "\n" + err
|
||||
} else {
|
||||
evt[zerolog.MessageFieldName] = err
|
||||
}
|
||||
delete(evt, zerolog.ErrorFieldName)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
w.FormatMessage = func(msgI any) string { // pad spaces for each line
|
||||
if msgI == nil {
|
||||
return ""
|
||||
|
||||
Reference in New Issue
Block a user