Parcourir la source

fix:修复binlog日志记录问题;邮件提醒部分更换;同花顺日志记录调整

Roc il y a 2 ans
Parent
commit
43af51bf5f

+ 5 - 3
main.go

@@ -5,12 +5,13 @@ import (
 	"github.com/beego/beego/v2/server/web"
 	_ "hongze/hongze_task/routers"
 	"hongze/hongze_task/services"
+	"hongze/hongze_task/services/alarm_msg"
 	"hongze/hongze_task/utils"
 	"runtime"
 	"time"
 
-	"github.com/beego/beego/v2/server/web/context"
 	"github.com/beego/beego/v2/adapter/logs"
+	"github.com/beego/beego/v2/server/web/context"
 )
 
 func main() {
@@ -50,7 +51,8 @@ func Recover(ctx *context.Context, conf *web.Config) {
 			logs.Critical(fmt.Sprintf("%s:%d", file, line))
 			stack = stack + fmt.Sprintln(fmt.Sprintf("%s:%d</br>", file, line))
 		}
-		go utils.SendEmail(utils.APPNAME+"崩了"+time.Now().Format("2006-01-02 15:04:05"), stack, utils.EmailSendToUsers)
+		//go utils.SendEmail(utils.APPNAME+"崩了"+time.Now().Format("2006-01-02 15:04:05"), stack, utils.EmailSendToUsers)
+		go alarm_msg.SendAlarmMsg(utils.APPNAME+"崩了"+time.Now().Format("2006-01-02 15:04:05")+"\n"+stack, 3)
 	}
 	return
-}
+}

+ 3 - 0
models/db.go

@@ -50,6 +50,9 @@ func init() {
 	gl, _ := orm.GetDB("gl")
 	gl.SetConnMaxLifetime(10 * time.Minute)
 
+	orm.Debug = true
+	orm.DebugLog = orm.NewLog(utils.Binlog)
+
 	//注册对象
 	orm.RegisterModel(
 		new(EdbinfoSendMsgRecord),

+ 5 - 2
services/activity.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"hongze/hongze_task/models"
 	"hongze/hongze_task/models/yb"
+	"hongze/hongze_task/services/alarm_msg"
 	"hongze/hongze_task/utils"
 	"time"
 )
@@ -14,7 +15,8 @@ func YbTelRemind(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
 			//fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送电话会提醒失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送电话会提醒失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("发送电话会提醒失败 ErrMsg:"+err.Error(), 3)
 		}
 	}()
 
@@ -42,7 +44,8 @@ func YbSalonRemind(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
 			//fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送电话会提醒失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送电话会提醒失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("发送研报沙龙提醒失败 ErrMsg:"+err.Error(), 3)
 		}
 	}()
 

+ 3 - 1
services/company_contract/company_contract.go

@@ -8,6 +8,7 @@ import (
 	"hongze/hongze_task/models/company"
 	"hongze/hongze_task/models/company_approval"
 	"hongze/hongze_task/models/company_contract"
+	"hongze/hongze_task/services/alarm_msg"
 	"hongze/hongze_task/utils"
 	"strings"
 	"time"
@@ -18,7 +19,8 @@ func HandleCompanyContract(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
 			//fmt.Println("合同处理 ErrMsg:"+err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "合同处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "合同处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("合同处理 ErrMsg:"+err.Error(), 3)
 		}
 	}()
 	today := utils.GetToday(utils.FormatDate)

+ 31 - 16
services/data/edb_info.go

@@ -16,7 +16,8 @@ func RefreshDataFromThs(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromThs Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromThs ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromThs ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromThs ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -81,7 +82,8 @@ func RefreshDataFromWind(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromWind Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromWind ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromWind ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromWind ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -143,7 +145,8 @@ func RefreshDataFromPb(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromPb Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromPb ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromPb ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromPb ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -551,7 +554,8 @@ func RefreshDataFromCalculateAll() (err error) {
 	defer func() {
 		if err != nil {
 			utils.FileLog.Info("RefreshDataFromCalculateAll Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromCalculateAll ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromCalculateAll ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromCalculateAll ErrMsg:"+err.Error(), 3)
 		}
 	}()
 	var condition string
@@ -825,7 +829,8 @@ func RefreshDataFromManual(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromManual Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromManual ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromManual ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromManual ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -876,7 +881,8 @@ func RefreshDataFromLz(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromLz Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromLz ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromLz ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromLz ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -938,7 +944,8 @@ func RefreshDataFromYs(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromYs Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromYs ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromYs ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromYs ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -1000,7 +1007,8 @@ func RefreshDataFromGl(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromGl Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromYs ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromGl ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromGl ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -1061,7 +1069,8 @@ func RefreshDataFromSh(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromSh Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromSh ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromSh ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromSh ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -1122,7 +1131,8 @@ func RefreshDataFromDl(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromDl Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromDl ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromDl ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromDl ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -1183,7 +1193,8 @@ func RefreshDataFromShfe(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromShfe Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromShfe ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromShfe ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromShfe ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -1244,7 +1255,8 @@ func RefreshDataFromCffex(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromCffex Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromCffex ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromCffex ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromCffex ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -1305,7 +1317,8 @@ func RefreshDataFromZz(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromZz Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromZz ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromZz ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromZz ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -1366,7 +1379,8 @@ func RefreshDataFromLt(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromLt Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromLt ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromLt ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromLt ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -1459,7 +1473,8 @@ func RefreshDataFromCoal(wg *sync.WaitGroup) (err error) {
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshDataFromCoal Err:" + err.Error())
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromCoal ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromCoal ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("RefreshDataFromCoal ErrMsg:"+err.Error(), 3)
 		}
 		wg.Done()
 	}()
@@ -1513,4 +1528,4 @@ func RefreshDataFromCoal(wg *sync.WaitGroup) (err error) {
 		}
 	}
 	return err
-}
+}

+ 14 - 8
services/report_push.go

@@ -7,6 +7,7 @@ import (
 	"fmt"
 	"github.com/wenzhenxi/gorsa"
 	"hongze/hongze_task/models"
+	"hongze/hongze_task/services/alarm_msg"
 	"hongze/hongze_task/utils"
 	"io/ioutil"
 	"net/http"
@@ -25,7 +26,8 @@ func SendWaitReport(cont context.Context) (err error) {
 	defer func() {
 		if err != nil {
 			//fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "延时任务发送报告至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "延时任务发送报告至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("延时任务发送报告至同花顺失败 ErrMsg:"+err.Error(), 3)
 		}
 	}()
 	list, err := models.GetWaitReportSendThsDetailList()
@@ -181,7 +183,8 @@ func SendReportToThs(reportId int) (err error) {
 	defer func() {
 		if err != nil {
 			//fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送报告至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送报告至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("发送报告至同花顺失败 ErrMsg:"+err.Error(), 3)
 		}
 	}()
 
@@ -253,7 +256,8 @@ func SendThs(title, labelStr, abstract, jumpBaseUrl, logoUrl, dataType string) (
 	defer func() {
 		if err != nil {
 			//fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送报告至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("发送消息至同花顺失败 ErrMsg:"+err.Error(), 3)
 		}
 	}()
 	pubKey := utils.THS_PubKey
@@ -307,7 +311,7 @@ func SendThs(title, labelStr, abstract, jumpBaseUrl, logoUrl, dataType string) (
 	form.Add("icon", picUrl)
 	form.Add("dataType", dataTypeEncript)
 
-	utils.FileLog.Info("SendThs parms:%s", form.Encode())
+	utils.FileLog.Info(fmt.Sprintf("SendThs parms:%s", form.Encode()))
 	resp, err := client.PostForm(sendUrl, form)
 	if err != nil {
 		return
@@ -317,7 +321,7 @@ func SendThs(title, labelStr, abstract, jumpBaseUrl, logoUrl, dataType string) (
 	body, _ := ioutil.ReadAll(resp.Body)
 
 	//fmt.Println(string(body))
-	utils.FileLog.Info("ThsResult parms:%s", string(body))
+	utils.FileLog.Info(fmt.Sprintf("ThsResult parms:%s", string(body)))
 
 	//同花顺接口返回数据
 	var tshResult TshResult
@@ -338,7 +342,8 @@ func SyncWxGroup(openCompanyCode, deadline string) (err error) {
 	defer func() {
 		if err != nil {
 			//fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "同步同花顺微信群信息失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "同步同花顺微信群信息失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "同步同花顺微信群信息失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("同步同花顺微信群信息失败 ErrMsg:"+err.Error(), 3)
 		}
 	}()
 	pubKey := utils.THS_PubKey
@@ -398,7 +403,8 @@ func SendReportMiniToThs(reportId int) (err error) {
 	defer func() {
 		if err != nil {
 			//fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "SendReportMiniToThs延时任务发送报告至同花顺失败, ReportId:" + strconv.Itoa(reportId) + ", ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "SendReportMiniToThs延时任务发送报告至同花顺失败, ReportId:"+strconv.Itoa(reportId)+", ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("SendReportMiniToThs延时任务发送报告至同花顺失败, ReportId:"+strconv.Itoa(reportId)+", ErrMsg:"+err.Error(), 3)
 		}
 	}()
 
@@ -453,4 +459,4 @@ func SendReportMiniToThs(reportId int) (err error) {
 	err = SendThs(report.Title, permissionStr, report.Abstract, jumpUrl, logoUrl, "2")
 
 	return
-}
+}

+ 45 - 0
utils/logs.go

@@ -1,11 +1,14 @@
 package utils
 
 import (
+	"encoding/json"
 	"github.com/beego/beego/v2/adapter/logs"
+	"os"
 )
 
 var FileLog *logs.BeeLogger
 var FileLogLz *logs.BeeLogger
+var Binlog *logs.BeeLogger
 
 func init() {
 	FileLog = logs.NewLogger(1000000)
@@ -13,4 +16,46 @@ func init() {
 
 	FileLogLz = logs.NewLogger(1000000)
 	FileLogLz.SetLogger(logs.AdapterFile, `{"filename":"./rdlucklog/hongze_task_lz.log"}`)
+
+	//初始化binlog日志
+	initBinlog()
+}
+
+func initBinlog() {
+	//binlog日志
+	binLogDir := `./binlog`
+	os.MkdirAll(binLogDir, os.ModePerm)
+	Binlog = logs.NewLogger(1000000)
+	logConfig := getDefaultLogConfig()
+	logConfig.FileName = "./binlog/binlog.log"
+	logConfig.MaxLines = 10000000
+	logConfig.Rotate = true
+	b, _ := json.Marshal(logConfig)
+	Binlog.SetLogger(logs.AdapterFile, string(b))
+	Binlog.EnableFuncCallDepth(true)
+}
+
+type logConfig struct {
+	FileName string `json:"filename" description:"保存的文件名"`
+	MaxLines int    `json:"maxlines"  description:"每个文件保存的最大行数,默认值 1000000"`
+	MaxSize  int    `json:"maxsize" description:"每个文件保存的最大尺寸,默认值是 1 << 28, //256 MB"`
+	Daily    bool   `json:"daily" description:"是否按照每天 logrotate,默认是 true"`
+	MaxDays  int    `json:"maxdays" description:"文件最多保存多少天,默认保存 7 天"`
+	Rotate   bool   `json:"rotate" description:"是否开启 logrotate,默认是 true"`
+	Level    int    `json:"level" description:"日志保存的时候的级别,默认是 Trace 级别"`
+	Color    bool   `json:"color" description:"日志是否输出颜色"`
+	//Perm     string `json:"perm" description:"日志文件权限"`
+}
+
+func getDefaultLogConfig() logConfig {
+	return logConfig{
+		FileName: "",
+		MaxLines: 0,
+		MaxSize:  1 << 28,
+		Daily:    true,
+		MaxDays:  31, //我就是喜欢31天,咋滴,不喜欢你就自己改-_-!
+		Rotate:   true,
+		Level:    logs.LevelTrace,
+		//Perm:     "",
+	}
 }