gpt4 book ai didi

golang xorm日志写入文件中的操作

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章golang xorm日志写入文件中的操作由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

golang访问数据库记录SQL语句:

使用的包为:

1:github.com/arthurkiller/rollingwriter //写入日志包 。

2: github.com/go-xorm/xorm //xorm包 。

具体实现为:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package main
import (
  "time"
 
  "github.com/arthurkiller/rollingwriter"
  _ "github.com/go-sql-driver/mysql"
  "github.com/go-xorm/xorm"
)
 
func main() {
  var conn string = "root:123456@tcp(127.0.0.1)/logsdemo?charset=utf-8"
  Engine, err := xorm.NewEngine("mysql", conn)
  if err != nil {
  panic("mysql connect fail")
  }
  config := rollingwriter.Config{
  LogPath: "./logs", //日志路径
  TimeTagFormat: "060102150405", //时间格式串
  FileName: "mysql_exec", //日志文件名
  MaxRemain: 3,  //配置日志最大存留数
  RollingPolicy: rollingwriter.VolumeRolling, //配置滚动策略 norolling t
  imerolling volumerolling
  RollingTimePattern: "* * * * * *",  //配置时间滚动策略
  RollingVolumeSize: "1M",   //配置截断文件下限大小
  WriterMode: "none",
  BufferWriterThershould: 256,
  // Compress will compress log file with gzip
  Compress: true,
  }
 
  writer, err := rollingwriter.NewWriterFromConfig(&config)
  if err != nil {
  panic(err)
  }
 
  var logger *xorm.SimpleLogger = xorm.NewSimpleLogger(writer)
  Engine.SetLogger(logger)
  Engine.ShowSQL(true)
  logger.Info("ts info code")
  Engine.Exec("select * from cp_order where id = ? ", 3)
  time.Sleep(1 * time.Second)
 
}

rollingwriter 实现一个 io.Writer传入到xorm.NewSimpleLogger 中 在xorm中实现日志的写入,在rollingwriter中保存日志到文件中 。

依赖包:https://github.com/robfig/cron 。

补充: golang xorm Model 模型文件模板 。

* Record.go 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package models
import (
  "fmt"
  "github.com/go-xorm/xorm"
  "time"
)
 
// 用户首次登录
type FirstLoginRecord struct {
  Id int64 `xorm:"not null pk autoincr INT(11)"`
  UserID int64 `json:"userid" xorm:"int(11) not null 'userid'"`
  IP string `json:"logonip" xorm:"varchar(45) not null 'logonip'"`
  CreatedAt time.Time `json:"logontime" xorm:"timestamp not null 'logontime'"`
  UpdatedAt time.Time `json:"logofftime" xorm:"timestamp not null 'logofftime'"`
  Source int `json:"source" xorm:"tinyint(3) not null"`
  IsCharged int `json:"ischargeaccount" xorm:"tinyint(3) unsigned not null 'ischargeaccount'"`
}
 
func (*FirstLoginRecord) TableName() string {
  return "W_UserFirstLogonRec"
}
 
func (*FirstLoginRecord) DB() *xorm.Engine {
  return DbDefault()
}
 
func (t *FirstLoginRecord) Save() error {
  var err error
  var engine = t.DB()
  if t.Id == 0 {
  t.Id, err = engine.Insert(t)
  return err
  }
  var rowsAffected int64
  rowsAffected, err = engine.Id(t.Id).Update(t)
  fmt.Printf("@table: %s: %d rows affected", t.TableName(), rowsAffected)
  return err
}
 
// 用户id唯一约束
func (this *FirstLoginRecord) AddDistinct() error {
  var err error
  var engine = this.DB()
  var has bool
  var ent = FirstLoginRecord{UserID: this.UserID }
  has, err = engine.Get(&ent)
  if has {
  return nil
  }
  this.Id, err = engine.Insert(this)
  return err
}

http://www.xorm.io/docs/ 。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我。如有错误或未考虑完全的地方,望不吝赐教.

原文链接:https://blog.csdn.net/shachao888/article/details/96854585 。

最后此篇关于golang xorm日志写入文件中的操作的文章就讲到这里了,如果你想了解更多关于golang xorm日志写入文件中的操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com