GO 中间件方式执行额外任务
package main
import (
"database/sql"
"fmt"
"mylog"
"time"
)
type Middleware struct{}
/*如遇错误,执行额外任务*/
func (m *Middleware) Println(v interface{}) {
if err, ok := v.(error); ok {
mylog.Println("执行额外任务:", err)
}
mylog.Println("正常执行原本任务:", v)
}
var dblink *sql.DB /*自行补充初始化过程*/
/*如遇错误,执行额外任务*/
func (m *Middleware) Println_sendln(v ...interface{}) {
for _, arg := range v {
if err, ok := arg.(error); ok {
mylog.Println("错误信息:", err)
err_msg := `警告消息:` + err.Error() //错误信息里可能有单引号
dingdingmsg := `exec dingding_add_msg ?,0,'xxk'`
// mylog.Println("sql:", dingdingmsg)
dblink.Exec(dingdingmsg, err_msg)
}
}
mylog.Println(v...)
}
func main() {
if err := DBinit_sqlserver2(); err != nil {
mylog.Println(err)
fmt.Println(err)
time.Sleep(5 * time.Minute)
return
} else {
fmt.Println(`链接sqlserver2成功`)
}
mv := &Middleware{}
mv.Println(11)
mv.Println(22)
mv.Println(fmt.Errorf("自定义错误"))
mv.Println_sendln(fmt.Errorf("测试自定义错误"), `121`)
}
写个函数调用似乎没什么不同
var logFile_handel_wx, _ = os.OpenFile(`./log/`+time.Now().Format("2006-01-02")+`--wx_api.log`, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
var mylog_wx = log.New(logFile_handel_wx, "", log.Lmicroseconds|log.Ldate)
func ffmyprint(Logger *log.Logger, v ...interface{}) {
for _, arg := range v {
if err, ok := arg.(error); ok {
Logger.Println("ffmyprint 错误信息:", err)
}
}
Logger.Println(v...)
}
ffmyprint(mylog_wx, fmt.Errorf("测试自定义错误"), `121`)
浙公网安备 33010602011771号