Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FLIPPED-AURORA
gin-vue-admin
提交
b1ae6cbe
G
gin-vue-admin
项目概览
FLIPPED-AURORA
/
gin-vue-admin
大约 1 年 前同步成功
通知
332
Star
18154
Fork
5505
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gin-vue-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b1ae6cbe
编写于
11月 24, 2020
作者:
m0_50812349
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
自定义gorm的logger
上级
9af429d4
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
154 addition
and
0 deletion
+154
-0
server/config.yaml
server/config.yaml
+1
-0
server/config/gorm.go
server/config/gorm.go
+1
-0
server/initialize/gorm.go
server/initialize/gorm.go
+6
-0
server/initialize/logger.go
server/initialize/logger.go
+146
-0
未找到文件。
server/config.yaml
浏览文件 @
b1ae6cbe
...
...
@@ -60,6 +60,7 @@ mysql:
max-idle-conns
:
10
max-open-conns
:
100
log-mode
:
false
log-zap
:
false
# local configuration
local
:
...
...
server/config/gorm.go
浏览文件 @
b1ae6cbe
...
...
@@ -9,4 +9,5 @@ type Mysql struct {
MaxIdleConns
int
`mapstructure:"max-idle-conns" json:"maxIdleConns" yaml:"max-idle-conns"`
MaxOpenConns
int
`mapstructure:"max-open-conns" json:"maxOpenConns" yaml:"max-open-conns"`
LogMode
bool
`mapstructure:"log-mode" json:"logMode" yaml:"log-mode"`
LogZap
bool
`mapstructure:"log-zap" json:"logZap" yaml:"log-zap"`
}
server/initialize/gorm.go
浏览文件 @
b1ae6cbe
...
...
@@ -73,6 +73,12 @@ func GormMysql() *gorm.DB {
// gormConfig 根据配置决定是否开启日志
func
gormConfig
(
mod
bool
)
*
gorm
.
Config
{
if
global
.
GVA_CONFIG
.
Mysql
.
LogZap
{
return
&
gorm
.
Config
{
Logger
:
Default
.
LogMode
(
logger
.
Info
),
DisableForeignKeyConstraintWhenMigrating
:
true
,
}
}
if
mod
{
return
&
gorm
.
Config
{
Logger
:
logger
.
Default
.
LogMode
(
logger
.
Info
),
...
...
server/initialize/logger.go
0 → 100644
浏览文件 @
b1ae6cbe
package
initialize
import
(
"context"
"fmt"
"gin-vue-admin/global"
"go.uber.org/zap"
"gorm.io/gorm/logger"
"gorm.io/gorm/utils"
"io/ioutil"
"log"
"os"
"time"
)
var
(
Discard
=
New
(
log
.
New
(
ioutil
.
Discard
,
""
,
log
.
LstdFlags
),
GormConfig
{})
Default
=
New
(
log
.
New
(
os
.
Stdout
,
"
\r\n
"
,
log
.
LstdFlags
),
GormConfig
{
SlowThreshold
:
200
*
time
.
Millisecond
,
LogLevel
:
logger
.
Warn
,
Colorful
:
true
,
})
Recorder
=
traceRecorder
{
Interface
:
Default
,
BeginAt
:
time
.
Now
()}
)
type
traceRecorder
struct
{
logger
.
Interface
BeginAt
time
.
Time
SQL
string
RowsAffected
int64
Err
error
}
func
New
(
writer
Writer
,
config
GormConfig
)
logger
.
Interface
{
var
(
infoStr
=
"%s
\n
[info] "
warnStr
=
"%s
\n
[warn] "
errStr
=
"%s
\n
[error] "
traceStr
=
"%s
\n
[%.3fms] [rows:%v] %s"
traceWarnStr
=
"%s %s
\n
[%.3fms] [rows:%v] %s"
traceErrStr
=
"%s %s
\n
[%.3fms] [rows:%v] %s"
)
if
config
.
Colorful
{
infoStr
=
logger
.
Green
+
"%s
\n
"
+
logger
.
Reset
+
logger
.
Green
+
"[info] "
+
logger
.
Reset
warnStr
=
logger
.
BlueBold
+
"%s
\n
"
+
logger
.
Reset
+
logger
.
Magenta
+
"[warn] "
+
logger
.
Reset
errStr
=
logger
.
Magenta
+
"%s
\n
"
+
logger
.
Reset
+
logger
.
Red
+
"[error] "
+
logger
.
Reset
traceStr
=
logger
.
Green
+
"%s
\n
"
+
logger
.
Reset
+
logger
.
Yellow
+
"[%.3fms] "
+
logger
.
BlueBold
+
"[rows:%v]"
+
logger
.
Reset
+
" %s"
traceWarnStr
=
logger
.
Green
+
"%s "
+
logger
.
Yellow
+
"%s
\n
"
+
logger
.
Reset
+
logger
.
RedBold
+
"[%.3fms] "
+
logger
.
Yellow
+
"[rows:%v]"
+
logger
.
Magenta
+
" %s"
+
logger
.
Reset
traceErrStr
=
logger
.
RedBold
+
"%s "
+
logger
.
MagentaBold
+
"%s
\n
"
+
logger
.
Reset
+
logger
.
Yellow
+
"[%.3fms] "
+
logger
.
BlueBold
+
"[rows:%v]"
+
logger
.
Reset
+
" %s"
}
return
&
GormLogger
{
Writer
:
writer
,
GormConfig
:
config
,
infoStr
:
infoStr
,
warnStr
:
warnStr
,
errStr
:
errStr
,
traceStr
:
traceStr
,
traceWarnStr
:
traceWarnStr
,
traceErrStr
:
traceErrStr
,
}
}
// Writer log writer interface
type
Writer
interface
{
Printf
(
string
,
...
interface
{})
}
type
GormConfig
struct
{
SlowThreshold
time
.
Duration
Colorful
bool
LogLevel
logger
.
LogLevel
}
type
GormLogger
struct
{
Writer
GormConfig
infoStr
,
warnStr
,
errStr
string
traceStr
,
traceErrStr
,
traceWarnStr
string
}
func
(
g
*
GormLogger
)
LogMode
(
level
logger
.
LogLevel
)
logger
.
Interface
{
newLogger
:=
*
g
newLogger
.
LogLevel
=
level
return
&
newLogger
}
func
(
g
*
GormLogger
)
Info
(
ctx
context
.
Context
,
message
string
,
data
...
interface
{})
{
if
g
.
LogLevel
>=
logger
.
Info
{
g
.
Printf
(
g
.
infoStr
+
message
,
append
([]
interface
{}{
utils
.
FileWithLineNum
()},
data
...
)
...
)
}
}
func
(
g
*
GormLogger
)
Warn
(
ctx
context
.
Context
,
message
string
,
data
...
interface
{})
{
if
g
.
LogLevel
>=
logger
.
Warn
{
g
.
Printf
(
g
.
warnStr
+
message
,
append
([]
interface
{}{
utils
.
FileWithLineNum
()},
data
...
)
...
)
}
}
func
(
g
*
GormLogger
)
Error
(
ctx
context
.
Context
,
message
string
,
data
...
interface
{})
{
if
g
.
LogLevel
>=
logger
.
Error
{
g
.
Printf
(
g
.
errStr
+
message
,
append
([]
interface
{}{
utils
.
FileWithLineNum
()},
data
...
)
...
)
}
}
func
(
g
*
GormLogger
)
Trace
(
ctx
context
.
Context
,
begin
time
.
Time
,
fc
func
()
(
string
,
int64
),
err
error
)
{
if
g
.
LogLevel
>
0
{
elapsed
:=
time
.
Since
(
begin
)
switch
{
case
err
!=
nil
&&
g
.
LogLevel
>=
logger
.
Error
:
sql
,
rows
:=
fc
()
if
rows
==
-
1
{
g
.
Printf
(
g
.
traceErrStr
,
utils
.
FileWithLineNum
(),
err
,
float64
(
elapsed
.
Nanoseconds
())
/
1e6
,
"-"
,
sql
)
}
else
{
g
.
Printf
(
g
.
traceErrStr
,
utils
.
FileWithLineNum
(),
err
,
float64
(
elapsed
.
Nanoseconds
())
/
1e6
,
rows
,
sql
)
}
case
elapsed
>
g
.
SlowThreshold
&&
g
.
SlowThreshold
!=
0
&&
g
.
LogLevel
>=
logger
.
Warn
:
sql
,
rows
:=
fc
()
slowLog
:=
fmt
.
Sprintf
(
"SLOW SQL >= %v"
,
g
.
SlowThreshold
)
if
rows
==
-
1
{
g
.
Printf
(
g
.
traceWarnStr
,
utils
.
FileWithLineNum
(),
slowLog
,
float64
(
elapsed
.
Nanoseconds
())
/
1e6
,
"-"
,
sql
)
}
else
{
g
.
Printf
(
g
.
traceWarnStr
,
utils
.
FileWithLineNum
(),
slowLog
,
float64
(
elapsed
.
Nanoseconds
())
/
1e6
,
rows
,
sql
)
}
case
g
.
LogLevel
>=
logger
.
Info
:
sql
,
rows
:=
fc
()
if
rows
==
-
1
{
g
.
Printf
(
g
.
traceStr
,
utils
.
FileWithLineNum
(),
float64
(
elapsed
.
Nanoseconds
())
/
1e6
,
"-"
,
sql
)
}
else
{
g
.
Printf
(
g
.
traceStr
,
utils
.
FileWithLineNum
(),
float64
(
elapsed
.
Nanoseconds
())
/
1e6
,
rows
,
sql
)
}
}
}
}
func
(
g
*
GormLogger
)
Printf
(
message
string
,
data
...
interface
{})
{
global
.
GVA_LOG
.
Info
(
"gorm"
,
zap
.
String
(
"type"
,
"sql"
),
zap
.
Any
(
"src"
,
data
[
0
]),
zap
.
Any
(
"duration"
,
data
[
1
]),
zap
.
Any
(
"rows"
,
data
[
2
]),
zap
.
Any
(
"sql"
,
data
[
3
]),
)
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录