From: qydysky Date: Tue, 14 Jan 2025 18:33:16 +0000 (+0800) Subject: Improve 保存日志至DB 统一占位符 (#148) X-Git-Tag: v0.15.0~1 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=241a590043cc6b4ed3502e50a287bba88ffcc0a5;p=bili_danmu%2F.git Improve 保存日志至DB 统一占位符 (#148) --- diff --git a/CV/Var.go b/CV/Var.go index 5c22295..ea42f7d 100644 --- a/CV/Var.go +++ b/CV/Var.go @@ -636,7 +636,7 @@ func (t *Common) Init() *Common { panic("保存日志至db打开连接错误 " + e.Error()) } } - t.Log = t.Log.LDB(db, insert, time.Second*5) + t.Log = t.Log.LDB(dbname, db, insert, time.Second*5) } } diff --git a/README.md b/README.md index 77720da..a362bc7 100644 --- a/README.md +++ b/README.md @@ -384,47 +384,47 @@ curl -s http://{主机名}:11000/ip/ | awk '/240:?/' ``` #### 保存日志至DB -配置文件中添加配置项`保存日志至db`。大部分可以参考保存弹幕至db,但有些许不同: +配置文件中添加配置项`保存日志至db`。~~大部分~~ 可以参考保存弹幕至db ~~,但有些许不同~~: + +~~`insert`语句中不能使用`{...}`的占位符,默认占位符1为Prefix,2为Base,3为具体内容。见下面的mysql实例。~~ + +使用`{...}`占位符,而非`?`。可选字段见下方示例(>v0.14.28) -`insert`语句中不能使用`{...}`的占位符,默认占位符1为Prefix,2为Base,3为具体内容。见下面的mysql实例。 ```json { - "保存日志至db": { - "dbname": "mysql", - "url":"root:root@(192.168.31.103:10836)/test", - "字段help":"$1:Prefix $2:Base $3:Msgs, use ? or $%d not placeholder", - "create":"create table log (t datetime,Prefix varchar(20), Base varchar(50), Msgs varchar(500))", - "insert":"insert into log (t,Prefix, Base, Msgs) values (now(),?,?,?)" + "保存日志至db":{ + "dbname": "postgres", + "url":"postgres://postgres:qydysky@192.168.31.103:5432/postgres?sslmode=disable", + "字段help":"{Date} time.Now().Format(time.DateTime), {Unix} time.Now().Unix(), {Prefix} string,{Base} string,{Msgs} string", + "create":"create table log2 (created varchar(20), createdunix varchar(20), Prefix varchar(10), Base varchar(30), Msgs varchar(500))", + "insert":"insert into log2 (created, createdunix, Prefix, Base, Msgs) values ({Date},{Unix},{Prefix},{Base},{Msgs})" } } ``` log: -|t|Prefix|Base|Msgs| -|-|------|----|----| -|2023-06-22 04:59:57|T:|Ass|编码: GB18030| -|2023-06-22 04:59:57|T:|功能 更少弹幕|每秒弹幕数: 1| -|2023-06-22 04:59:57|I:|功能 直播Web服务|启动于 http://0.0.0.0:11000/web/| -|2023-06-22 04:59:57|I:|bilidanmu|当前PID: 716582| -|2023-06-22 04:59:57|I:|bilidanmu|version: 20230614221100| -|2023-06-22 04:59:57|I:|bilidanmu|3s内2次ctrl+c退出| -|2023-06-22 04:59:57|I:|bilidanmu|当前ip:http://192.168.31.101| -|2023-06-22 04:59:57|I:|bilidanmu|当前ip:http://172.16.0.1| -|2023-06-22 04:59:57|I:|bilidanmu|当前ip:http://172.17.0.1| -|2023-06-22 04:59:57|I:|bilidanmu|当前ip:http://172.17.0.10| -|2023-06-22 04:59:57|I:|bilidanmu|当前ip:http://172.17.86.21| -|2023-06-22 04:59:58|T:|api IsConnected|已连接| -|2023-06-22 04:59:58|T:|api Get|Get Cookie| -|2023-06-22 04:59:58|I:|api 获取Cookie|已登录| -|2023-06-22 04:59:59|T:|api Get|Get LIVE_BUVID| -|2023-06-22 04:59:59|I:|api LIVE_BUVID|获取到LIVE_BUVID,保存cookie| -|2023-06-22 04:59:59|T:|api Get|Get Uid| -|2023-06-22 04:59:59|T:|命令行操作|回车查看帮助| -|2023-06-22 04:59:59|T:|api 银瓜子=>硬币|现在有银瓜子 396 个| -|2023-06-22 04:59:59|W:|api 银瓜子=>硬币|当前银瓜子数量不足| -|2023-06-22 04:59:59|T:|api 签到|签到| -|2023-06-22 05:00:01|I:|bilidanmu|结束退出| +|"created" |"createdunix"|"prefix"|"base" |"msgs" | +|-------|-----------|---|-----|----| +|"2025-01-15 01:42:25"|"1736876545" |T: |功能 更少弹幕 |每秒弹幕数: 1 | +|"2025-01-15 01:42:25"|"1736876545" |I: |功能 直播Web服务 |启动于 http://0.0.0.0:20000/web/| +|"2025-01-15 01:42:25"|"1736876545" |I: |bilidanmu |当前PID: 485073 | +|"2025-01-15 01:42:25"|"1736876545" |I: |bilidanmu |version: 20250105171800 | +|"2025-01-15 01:42:25"|"1736876545" |I: |bilidanmu |"3s内2次ctrl+c退出" | +|"2025-01-15 01:42:26"|"1736876546" |T: |api IsConnected|已连接 | +|"2025-01-15 01:42:26"|"1736876546" |T: |api Get |Get Cookie | +|"2025-01-15 01:42:26"|"1736876546" |I: |api 获取Cookie |已登录 | +|"2025-01-15 01:42:27"|"1736876547" |T: |api Get |Get LIVE_BUVID | +|"2025-01-15 01:42:27"|"1736876547" |I: |api LIVE_BUVID |获取到LIVE_BUVID,保存cookie | +|"2025-01-15 01:42:27"|"1736876547" |T: |api Get |Get Uid | +|"2025-01-15 01:42:27"|"1736876547" |T: |命令行操作 |回车查看帮助 | +|"2025-01-15 01:42:28"|"1736876548" |T: |api 银瓜子=>硬币 |现在有银瓜子 518 个 | +|"2025-01-15 01:42:28"|"1736876548" |I: |api 银瓜子=>硬币 |当前银瓜子数量不足 | +|"2025-01-15 01:42:28"|"1736876548" |I: |功能 保持亮牌 |将在 00:00:00 启动 | +|"2025-01-15 01:42:28"|"1736876548" |T: |指定弹幕重启录制 |加载 1 条规则 | +|"2025-01-15 01:42:51"|"1736876571" |I: |bilidanmu |等待1m0s协程结束 | +|"2025-01-15 01:42:51"|"1736876571" |I: |bilidanmu |结束 | + #### 保存弹幕至DB 配置文件中添加配置项`保存弹幕至db`。参考以下实例: diff --git a/Reply/F.go b/Reply/F.go index 786cdde..608ca88 100644 --- a/Reply/F.go +++ b/Reply/F.go @@ -1565,11 +1565,12 @@ func (t *SaveDanmuToDB) danmu(item Danmu_item) { Roomid int64 } - var replaceF []func(index int, holder string) (replaceTo string) - if t.dbname == "postgres" { - replaceF = append(replaceF, func(index int, holder string) (replaceTo string) { - return fmt.Sprintf("$%d", index+1) - }) + var replaceF psql.ReplaceF + switch t.dbname { + case "postgres": + replaceF = psql.PlaceHolderB + default: + replaceF = psql.PlaceHolderA } tx := psql.BeginTx[any](t.db, pctx.GenTOCtx(time.Second*5)) @@ -1581,7 +1582,7 @@ func (t *SaveDanmuToDB) danmu(item Danmu_item) { Auth: item.auth, Uid: item.uid, Roomid: int64(item.roomid), - }, replaceF...) + }, replaceF) tx.AfterEF(func(_ *any, result sql.Result, e *error) { if v, err := result.RowsAffected(); err != nil { *e = err diff --git a/Reply/Reply.go b/Reply/Reply.go index 7472d6a..1924bcf 100644 --- a/Reply/Reply.go +++ b/Reply/Reply.go @@ -1310,7 +1310,7 @@ func (t replyF) danmu(s string) { if v, ok := t.Common.K_v.LoadV(`弹幕输出到日志`).(bool); !ok || !v { danmulog.LFile("") - danmulog.LDB(nil, "") + danmulog.LDB("", nil, "") } { // 附加功能 弹幕机 封禁 弹幕合并 diff --git a/demo/config/config_K_v.json b/demo/config/config_K_v.json index aceb0c9..2b34c54 100644 --- a/demo/config/config_K_v.json +++ b/demo/config/config_K_v.json @@ -45,7 +45,7 @@ "保存弹幕至db": { "dbname": "", "url":"", - "字段help":"time.Now().Format(time.DateTime), time.Now().Unix(), item.msg, item.color, item.auth, item.uid, item.roomid", + "字段help":"{Date} time.Now().Format(time.DateTime), {Unix} time.Now().Unix(), {Msg} item.msg, {Color} item.color, {auth} item.auth, {Uid} item.uid, {Roomid} item.roomid", "create":"", "insert":"" }, @@ -60,7 +60,7 @@ "保存日志至db": { "dbname": "", "url":"", - "字段help":"$1:Prefix $2:Base $3:Msgs, use ? or $%d not placeholder", + "字段help":"{Date} time.Now().Format(time.DateTime), {Unix} time.Now().Unix(), {Prefix} string,{Base} string,{Msgs} string", "create":"", "insert":"" }, diff --git a/go.mod b/go.mod index aec4388..65a0300 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.23 require ( github.com/gotk3/gotk3 v0.6.4 github.com/mdp/qrterminal/v3 v3.2.0 - github.com/qydysky/part v0.28.20241224232618 + github.com/qydysky/part v0.28.20250114181028 github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 golang.org/x/text v0.21.0 diff --git a/go.sum b/go.sum index d8160ae..e4febbd 100644 --- a/go.sum +++ b/go.sum @@ -48,8 +48,8 @@ github.com/qydysky/biliApi v0.0.0-20240725184407-15076dddb6fb h1:dtSpNF9hLQa09TU github.com/qydysky/biliApi v0.0.0-20240725184407-15076dddb6fb/go.mod h1:om024vfxALQ5vxsbaGoMm8IS0esLYBnEOpJI8FsGoDg= github.com/qydysky/brotli v0.0.0-20240828134800-e9913a6e7ed9 h1:k451T+bpsLr+Dq9Ujo+Qtx0iomRA1XXS5ttlEojvfuQ= github.com/qydysky/brotli v0.0.0-20240828134800-e9913a6e7ed9/go.mod h1:cI8/gy/wjy2Eb+p2IUj2ZuDnC8R5Vrx3O0VMPvMvphA= -github.com/qydysky/part v0.28.20241224232618 h1:tloYqQfn2lBgO6w7n9bi8Ytzh7il60MJ1AhD8P4+oIM= -github.com/qydysky/part v0.28.20241224232618/go.mod h1:RAb3G05OaqCSRWFJz9FnONB6iqF/Dk4R+Z5c/H7mWSg= +github.com/qydysky/part v0.28.20250114181028 h1:YWsQkOcwHtL7KkHMl2l+NP4ZdO0gCZ7Ft0qh8Z5bbZ8= +github.com/qydysky/part v0.28.20250114181028/go.mod h1:RAb3G05OaqCSRWFJz9FnONB6iqF/Dk4R+Z5c/H7mWSg= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=