diff --git a/pkg.go b/pkg.go index a177709..a74ab66 100644 --- a/pkg.go +++ b/pkg.go @@ -10,8 +10,9 @@ import ( type Error struct { err error - file string - line int + File string + Line int + Data interface{} } type LogCallback func(Error) @@ -44,20 +45,21 @@ func callback(wrapped Error) { func (wrapped Error) Error() string { return fmt.Sprintf( "[%s:%d] %s", - wrapped.file, - wrapped.line, + wrapped.File, + wrapped.Line, wrapped.err.Error(), ) } -func create(err error) error { +func create(err error, data interface{}) error { _, file, line, _ := runtime.Caller(2) file = file[baseDirLength+1:] wrapped := Error{ err: err, - file: file, - line: line, + File: file, + Line: line, + Data: data, } callback(wrapped) @@ -67,11 +69,20 @@ func create(err error) error { // Wrap wraps an existing error with file and line. func Wrap(err error) error { - return create(err) + return create(err, "") +} + +func WrapData(err error, data interface{}) error { + return create(err, data) } // New creates a new wrapped error with file and line. func New(msg string) error { - wrapped := create(errors.New(msg)) + wrapped := create(errors.New(msg), "") + return wrapped +} + +func NewData(msg string, data interface{}) error { + wrapped := create(errors.New(msg), data) return wrapped }