1 Star 0 Fork 0

逃兵0216 / mindoc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
Logs.go 2.01 KB
一键复制 编辑 原始数据 按行查看 历史
Minho 提交于 2018-06-06 20:45 . 优化单页打印
package models
import (
"errors"
"github.com/astaxie/beego/orm"
"github.com/lifei6671/mindoc/conf"
"sync/atomic"
"time"
)
var loggerQueue = &logQueue{channel: make(chan *Logger, 100), isRuning: 0}
type logQueue struct {
channel chan *Logger
isRuning int32
}
// Logger struct .
type Logger struct {
LoggerId int64 `orm:"pk;auto;unique;column(log_id)" json:"log_id"`
MemberId int `orm:"column(member_id);type(int)" json:"member_id"`
// 日志类别:operate 操作日志/ system 系统日志/ exception 异常日志 / document 文档操作日志
Category string `orm:"column(category);size(255);default(operate)" json:"category"`
Content string `orm:"column(content);type(text)" json:"content"`
OriginalData string `orm:"column(original_data);type(text)" json:"original_data"`
PresentData string `orm:"column(present_data);type(text)" json:"present_data"`
CreateTime time.Time `orm:"type(datetime);column(create_time);auto_now_add" json:"create_time"`
UserAgent string `orm:"column(user_agent);size(500)" json:"user_agent"`
IPAddress string `orm:"column(ip_address);size(255)" json:"ip_address"`
}
// TableName 获取对应数据库表名.
func (m *Logger) TableName() string {
return "logs"
}
// TableEngine 获取数据使用的引擎.
func (m *Logger) TableEngine() string {
return "INNODB"
}
func (m *Logger) TableNameWithPrefix() string {
return conf.GetDatabasePrefix() + m.TableName()
}
func NewLogger() *Logger {
return &Logger{}
}
func (m *Logger) Add() error {
if m.MemberId <= 0 {
return errors.New("用户ID不能为空")
}
if m.Category == "" {
m.Category = "system"
}
if m.Content == "" {
return errors.New("日志内容不能为空")
}
loggerQueue.channel <- m
if atomic.LoadInt32(&(loggerQueue.isRuning)) <= 0 {
atomic.AddInt32(&(loggerQueue.isRuning), 1)
go addLoggerAsync()
}
return nil
}
func addLoggerAsync() {
defer atomic.AddInt32(&(loggerQueue.isRuning), -1)
o := orm.NewOrm()
for {
logger := <-loggerQueue.channel
o.Insert(logger)
}
}
1
https://gitee.com/whan0216/mindoc.git
git@gitee.com:whan0216/mindoc.git
whan0216
mindoc
mindoc
v2.0.0

搜索帮助