Skip to content

Commit 342ba29

Browse files
committed
logger to /pkg/music, new logger format
1 parent 9fb9170 commit 342ba29

15 files changed

Lines changed: 146 additions & 88 deletions

File tree

cmd/cli/main.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,12 @@ func main() {
3030
log := applog.Setup("cli", cfg)
3131
log.Info().Str("project", info.Project).Msg("cli_starting")
3232

33-
provider := sink.NewSpeakerProvider()
33+
provider := sink.NewSpeakerProviderWithLogger(log)
3434
defer provider.Close()
3535

3636
res := resolve.New()
3737
p := player.NewWithOptions(provider, res, player.Options{
38+
Logger: log,
3839
TransportRecoveryMode: cfg.PlayerTransportRecoveryMode,
3940
TransportSoftAttempts: cfg.PlayerTransportSoftAttempts,
4041
})

go.mod

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,21 @@ require (
88
github.com/keshon/buildinfo v0.1.0
99
github.com/keshon/commandkit v0.1.0
1010
github.com/keshon/datastore v0.1.1
11-
github.com/rs/zerolog v1.34.0
11+
github.com/rs/zerolog v1.35.1
1212
gopkg.in/natefinch/lumberjack.v2 v2.2.1
1313
)
1414

1515
require (
1616
github.com/cloudflare/circl v1.6.3 // indirect
1717
github.com/ebitengine/purego v0.10.0 // indirect
18-
github.com/mattn/go-colorable v0.1.13 // indirect
19-
github.com/mattn/go-isatty v0.0.19 // indirect
18+
github.com/mattn/go-colorable v0.1.14 // indirect
19+
github.com/mattn/go-isatty v0.0.22 // indirect
2020
github.com/tetratelabs/wazero v1.11.0 // indirect
2121
golang.org/x/crypto v0.50.0 // indirect
2222
golang.org/x/sys v0.43.0 // indirect
2323
)
2424

2525
require (
26-
github.com/bdandy/go-errors v1.2.2 // indirect
27-
github.com/bdandy/go-socks4 v1.2.3
2826
github.com/bitly/go-simplejson v0.5.1 // indirect
2927
github.com/dlclark/regexp2 v1.12.0 // indirect
3028
github.com/dop251/goja v0.0.0-20260311135729-065cd970411c // indirect
@@ -39,7 +37,7 @@ require (
3937
github.com/gorilla/websocket v1.5.3 // indirect
4038
github.com/joho/godotenv v1.5.1
4139
github.com/kkdai/youtube/v2 v2.10.6
42-
golang.org/x/net v0.53.0
40+
golang.org/x/net v0.53.0 // indirect
4341
)
4442

4543
replace github.com/bwmarrin/discordgo => ./pkg/discordgo-fork-dev

go.sum

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=
22
github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
3-
github.com/bdandy/go-errors v1.2.2 h1:WdFv/oukjTJCLa79UfkGmwX7ZxONAihKu4V0mLIs11Q=
4-
github.com/bdandy/go-errors v1.2.2/go.mod h1:NkYHl4Fey9oRRdbB1CoC6e84tuqQHiqrOcZpqFEkBxM=
5-
github.com/bdandy/go-socks4 v1.2.3 h1:Q6Y2heY1GRjCtHbmlKfnwrKVU/k81LS8mRGLRlmDlic=
6-
github.com/bdandy/go-socks4 v1.2.3/go.mod h1:98kiVFgpdogR8aIGLWLvjDVZ8XcKPsSI/ypGrO+bqHI=
73
github.com/bitly/go-simplejson v0.5.1 h1:xgwPbetQScXt1gh9BmoJ6j9JMr3TElvuIyjR8pgdoow=
84
github.com/bitly/go-simplejson v0.5.1/go.mod h1:YOPVLzCfwK14b4Sff3oP1AmGhI9T9Vsg84etUnlyp+Q=
95
github.com/caarlos0/env/v11 v11.4.0 h1:Kcb6t5kIIr4XkoQC9AF2j+8E1Jsrl3Wz/hhm1LtoGAc=
@@ -42,36 +38,36 @@ github.com/kkdai/youtube/v2 v2.10.6 h1:4sKaX6GtjbsDRnPINrf2rtBIxRKz5eXQZ5ccUVPjk
4238
github.com/kkdai/youtube/v2 v2.10.6/go.mod h1:Oj3uSagusCkXuPiripRDgAXyCaKIjAHAY90qC8Sd+m4=
4339
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
4440
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
41+
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
42+
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
4543
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
4644
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
4745
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
46+
github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4=
47+
github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
4848
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
4949
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
5050
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
5151
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
5252
github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY=
5353
github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ=
54+
github.com/rs/zerolog v1.35.1 h1:m7xQeoiLIiV0BCEY4Hs+j2NG4Gp2o2KPKmhnnLiazKI=
55+
github.com/rs/zerolog v1.35.1/go.mod h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw=
5456
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
5557
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
5658
github.com/tetratelabs/wazero v1.11.0 h1:+gKemEuKCTevU4d7ZTzlsvgd1uaToIDtlQlmNbwqYhA=
5759
github.com/tetratelabs/wazero v1.11.0/go.mod h1:eV28rsN8Q+xwjogd7f4/Pp4xFxO7uOGbLcD/LzB1wiU=
5860
golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI=
5961
golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
60-
golang.org/x/net v0.0.0-20211104170005-ce137452f963/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
6162
golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
6263
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
63-
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
64-
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
6564
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6665
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6766
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6867
golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
6968
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
70-
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
71-
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
7269
golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
7370
golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
74-
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
7571
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
7672
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
7773
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=

internal/applog/applog.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,21 @@ import (
1414
// Setup builds a zerolog.Logger: pretty JSON lines to stderr via ConsoleWriter, and if cfg.LogFile
1515
// is set, the same JSON events to a rotated file. service is stored on every event (e.g. discord, cli).
1616
func Setup(service string, cfg *config.Config) zerolog.Logger {
17+
_ = service
1718
level, err := zerolog.ParseLevel(cfg.LogLevel)
1819
if err != nil {
1920
level = zerolog.InfoLevel
2021
}
2122

23+
// JSON-only caller field (console hides it below).
24+
zerolog.CallerFieldName = "at"
25+
2226
console := zerolog.ConsoleWriter{
2327
Out: os.Stderr,
2428
TimeFormat: time.RFC3339,
2529
}
30+
// Console: keep it focused — msg + useful fields. Hide at/service.
31+
console.FieldsExclude = []string{"service", "at"}
2632

2733
var writers []io.Writer
2834
writers = append(writers, console)
@@ -52,6 +58,6 @@ func Setup(service string, cfg *config.Config) zerolog.Logger {
5258
Level(level).
5359
With().
5460
Timestamp().
55-
Str("service", service).
61+
Caller().
5662
Logger()
5763
}

internal/discord/discordgo_log.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,40 @@ package discord
22

33
import (
44
"fmt"
5+
"runtime"
6+
"strconv"
57

68
"github.com/bwmarrin/discordgo"
79
"github.com/rs/zerolog"
810
)
911

1012
// attachDiscordgoLogger routes discordgo internal logs through zerolog (global hook in discordgo).
11-
//
12-
// Every entry uses a fixed event name "discordgo_log" so it can be grepped reliably.
13-
// The original printf-formatted message lands in the "raw" field, the discordgo
14-
// severity in "dg_level", and the package marker in "component".
1513
func attachDiscordgoLogger(log zerolog.Logger) {
1614
discordgo.Logger = func(msgL, caller int, format string, a ...interface{}) {
17-
_ = caller
1815
raw := fmt.Sprintf(format, a...)
1916

2017
var (
21-
level string
2218
ev *zerolog.Event
2319
)
2420
switch msgL {
2521
case discordgo.LogError:
26-
level, ev = "error", log.Error()
22+
ev = log.Error()
2723
case discordgo.LogWarning:
28-
level, ev = "warn", log.Warn()
24+
ev = log.Warn()
2925
case discordgo.LogInformational:
30-
level, ev = "info", log.Info()
26+
ev = log.Info()
3127
case discordgo.LogDebug:
32-
level, ev = "debug", log.Debug()
28+
ev = log.Debug()
3329
default:
34-
level, ev = "unknown", log.Info()
30+
ev = log.Info()
3531
}
3632

37-
ev.Str("component", "discordgo").
38-
Str("dg_level", level).
39-
Str("raw", raw).
40-
Msg("discordgo_log")
33+
// Ensure "at" points to the discordgo callsite (not this bridge).
34+
if pc, file, line, ok := runtime.Caller(caller); ok {
35+
_ = pc
36+
ev.Str("at", file+":"+strconv.Itoa(line))
37+
}
38+
39+
ev.Str("raw", raw).Msg(raw)
4140
}
4241
}

internal/discord/voice/service.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ func (s *Service) GetOrCreatePlayer(guildID string) *player.Player {
9494
s.sinkProviders[guildID] = provider
9595
}
9696
p := player.NewWithOptions(provider, s.resolver, player.Options{
97+
Logger: s.log,
9798
TransportRecoveryMode: s.cfg.PlayerTransportRecoveryMode,
9899
TransportSoftAttempts: s.cfg.PlayerTransportSoftAttempts,
99100
})

internal/discord/voice/sink/provider_discord.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func NewDiscordSinkProvider(getSession SessionGetter, guildID string, voiceReady
3434
getSession: getSession,
3535
guildID: guildID,
3636
voiceReadyDelay: voiceReadyDelay,
37-
log: log.With().Str("component", "DiscordSinkProvider").Logger(),
37+
log: log.With().Str("component", "sink").Logger(),
3838
}
3939
}
4040

pkg/music/parsers/kkdai/link.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"errors"
66
"fmt"
77
"io"
8-
"log"
98
"os/exec"
109
"sync"
1110

@@ -99,7 +98,7 @@ func kkdaiLink(track *parsers.TrackParse, seekSec float64) (io.ReadCloser, func(
9998
go func() {
10099
sc := bufio.NewScanner(stderr)
101100
for sc.Scan() {
102-
log.Printf("[kkdai-link] ffmpeg: %s", sc.Text())
101+
log.Info().Str("raw", sc.Text()).Msg("ffmpeg_stderr")
103102
}
104103
}()
105104

pkg/music/parsers/kkdai/pipe.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"errors"
55
"fmt"
66
"io"
7-
"log"
87
"os/exec"
98

109
"github.com/keshon/melodix/pkg/music/parsers"
@@ -38,7 +37,7 @@ func kkdaiPipe(track *parsers.TrackParse, seekSec float64) (io.ReadCloser, func(
3837
return nil, nil, fmt.Errorf("get stream error: %w", err)
3938
}
4039

41-
log.Printf("[kkdai-pipe] stream size: unknown (piping)\n") // size not used
40+
log.Debug().Msg("stream_size_unknown_piping")
4241

4342
ffmpeg := exec.Command("ffmpeg",
4443
"-ss", fmt.Sprintf("%.3f", seekSec),

pkg/music/parsers/kkdai/streamer.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"io"
55

66
"github.com/keshon/melodix/pkg/music/parsers"
7+
"github.com/rs/zerolog"
78
)
89

910
const (
@@ -13,6 +14,17 @@ const (
1314

1415
type Streamer struct{}
1516

17+
var log = zerolog.Nop()
18+
19+
// SetLogger sets an optional logger for kkdai parser internals (ffmpeg stderr, debug signals).
20+
func SetLogger(l zerolog.Logger) {
21+
if l.GetLevel() == zerolog.NoLevel {
22+
log = zerolog.Nop()
23+
return
24+
}
25+
log = l
26+
}
27+
1628
func (s *Streamer) LinkStream(track *parsers.TrackParse, seekSec float64) (io.ReadCloser, func(), error) {
1729
return kkdaiLink(track, seekSec)
1830
}

0 commit comments

Comments
 (0)