This commit is contained in:
Eugeny Leonov 2022-06-03 09:40:01 +05:00
parent ebd4c3101d
commit 606f275c03
5 changed files with 56 additions and 22 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
*.sqlite3
*.sqlite3
*.err

View File

@ -37,7 +37,7 @@ func InitDS(ds *gorm.DB) *Err {
//Произвести запись в датасторе
// 0.1.0
func __storeDS(e *Err) *Err {
func storeDS(e *Err) *Err {
if errDS == nil {
return e
}
@ -88,8 +88,7 @@ func DSList(from, count int, filter ...string) *ErrRecs {
if e := tx.Count(&rsp.Total).Error; e != nil {
RaiseError(ErrDSError, e.Error())
}
tx = tx.Offset(from).Limit(count)
if e := tx.Find(&rsp.Items).Error; e != nil {
if e := tx.Offset(from).Limit(count).Find(&rsp.Items).Error; e != nil {
RaiseError(ErrDSError, e.Error())
return nil
}

22
errFS.go Normal file
View File

@ -0,0 +1,22 @@
package errs
import (
"fmt"
"os"
)
var errFS *os.File = nil
func InitFS(f *os.File) *Err {
errFS = f
return nil
}
func storeFS(err *Err) {
if errFS == nil {
return
}
if _, e := errFS.WriteString(err.getString() + "\n"); e != nil {
fmt.Fprintln(os.Stderr, "Error write to file: "+e.Error())
}
}

37
errs.go
View File

@ -11,7 +11,7 @@ import (
type ErrCode string
var Silent = false
var StrFmt = "%date% %time% [%code%] %error% at %file%:%line% %func%"
var StrFmt = "[ERROR] %date% %time% [%code%] %error% at %file%:%line% %func%"
var Trace = false
const (
@ -20,7 +20,7 @@ const (
ErrDSError ErrCode = "ErrDSError"
)
type __src struct {
type src struct {
File string
Line int
Func string
@ -32,7 +32,7 @@ type Err struct {
dsId int64
Code ErrCode
Msg string
src __src
src src
Prev *Err
}
@ -51,11 +51,11 @@ func RaiseError(eCode ErrCode, msg string) *Err {
e := &Err{
Code: eCode,
Msg: msg,
src: __getSrc(2),
src: getSrc(2),
Prev: nil,
}
e = __storeDS(e)
__logError(e)
e = storeDS(e)
logError(e)
return e
}
@ -65,12 +65,12 @@ func UpError(err *Err) *Err {
e := &Err{
Code: err.Code,
Msg: err.Msg,
src: __getSrc(2),
src: getSrc(2),
Prev: err,
}
e = __storeDS(e)
e = storeDS(e)
if Trace {
__logError(e)
logError(e)
}
return e
}
@ -81,24 +81,24 @@ func Error(e error) *Err {
err := &Err{
Code: ErrError,
Msg: e.Error(),
src: __getSrc(2),
src: getSrc(2),
Prev: nil,
}
err = __storeDS(err)
__logError(err)
err = storeDS(err)
logError(err)
return err
}
//Получить источник
// 0.1.0
func __getSrc(lvl int) (s __src) {
func getSrc(lvl int) (s src) {
pc, file, line, ok := runtime.Caller(lvl)
if !ok {
return __src{File: "undefined", Line: 0, Func: "undefined()"}
return src{File: "undefined", Line: 0, Func: "undefined()"}
}
f := runtime.CallersFrames([]uintptr{pc})
ff, _ := f.Next()
s = __src{
s = src{
File: file,
Line: line,
Func: ff.Function,
@ -108,7 +108,7 @@ func __getSrc(lvl int) (s __src) {
//Получить строку по формату
// 0.1.0
func (e *Err) __getString() string {
func (e *Err) getString() string {
if e == nil {
panic("Err is NIL")
}
@ -123,9 +123,10 @@ func (e *Err) __getString() string {
//Вывести ошибку
// 0.1.0
func __logError(e *Err) {
func logError(e *Err) {
storeFS(e)
if Silent {
return
}
fmt.Fprintln(os.Stderr, e.__getString())
fmt.Fprintln(os.Stderr, e.getString())
}

View File

@ -2,6 +2,7 @@ package errs
import (
"fmt"
"os"
"testing"
"gorm.io/driver/sqlite"
@ -19,6 +20,16 @@ func TestErrs(t *testing.T) {
t.Fatal(err)
}
//< InitDS =
//= InitFS >
f, e := os.OpenFile("errs_test.err", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0664)
if e != nil {
t.Fatal(e)
}
err = InitFS(f)
if err != nil {
t.Fatal(err)
}
//< InitFS =
err = RaiseError(ErrError, "Some new error")
if err != nil {