From 32b889df2d3d417794758a3bed4d1faf4578586a Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Tue, 19 Jul 2022 20:05:02 +1000 Subject: [PATCH] add tracing and brush up export logging --- internal/app/app.go | 2 +- internal/export/export.go | 29 ++++++++++++++++------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/internal/app/app.go b/internal/app/app.go index 29316cb8..9b0eba77 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -26,7 +26,7 @@ type App struct { cfg Config } -// New creates a new slackdump app. It inherits the logging from slack optiond +// New creates a new slackdump app. It inherits the logging from slack options // in the Config. func New(cfg Config, provider auth.Provider) (*App, error) { if err := cfg.Validate(); err != nil { diff --git a/internal/export/export.go b/internal/export/export.go index af3d0553..46f02427 100644 --- a/internal/export/export.go +++ b/internal/export/export.go @@ -12,7 +12,6 @@ import ( "github.com/slack-go/slack" - "github.com/rusq/dlog" "github.com/rusq/slackdump/v2" "github.com/rusq/slackdump/v2/downloader" "github.com/rusq/slackdump/v2/fsadapter" @@ -25,9 +24,9 @@ import ( // Export is the instance of Slack Exporter. type Export struct { - fs fsadapter.FS // target filesystem - sd *slackdump.Session // Session instance - dlog logger.Interface + fs fsadapter.FS // target filesystem + sd *slackdump.Session // Session instance + lg logger.Interface // time window opts Options @@ -36,9 +35,9 @@ type Export struct { // New creates a new Export instance, that will save export to the // provided fs. func New(sd *slackdump.Session, fs fsadapter.FS, cfg Options) *Export { - se := &Export{fs: fs, sd: sd, dlog: cfg.Logger, opts: cfg} - if se.dlog == nil { - se.dlog = logger.Default + se := &Export{fs: fs, sd: sd, lg: cfg.Logger, opts: cfg} + if se.lg == nil { + se.lg = logger.Default } network.Logger = se.l() return se @@ -72,7 +71,11 @@ func (se *Export) messages(ctx context.Context, users types.Users) error { if se.opts.IncludeFiles { // start the downloader dl.Start(ctx) - defer dl.Stop() + defer func() { + trace.Log(ctx, "info", "waiting for downloads to finish") + dl.Stop() + trace.Log(ctx, "info", "downloader stopped") + }() } var chans []slack.Channel @@ -118,7 +121,7 @@ func (se *Export) exclusiveExport(ctx context.Context, dl *downloader.Client, us if err := se.sd.StreamChannels(ctx, slackdump.AllChanTypes, func(ch slack.Channel) error { if include, ok := listIdx[ch.ID]; ok && !include { trace.Logf(ctx, "info", "skipping %s", ch.ID) - dlog.Printf("skipping: %s", ch.ID) + se.lg.Printf("skipping: %s", ch.ID) return nil } if err := se.exportConversation(ctx, dl, uidx, ch); err != nil { @@ -155,7 +158,7 @@ func (se *Export) inclusiveExport(ctx context.Context, dl *downloader.Client, us for _, entry := range list.Include { if include, ok := elIdx[entry]; ok && !include { trace.Logf(ctx, "info", "skipping %s", entry) - dlog.Printf("skipping: %s", entry) + se.lg.Printf("skipping: %s", entry) continue } sl, err := structures.ParseLink(entry) @@ -288,8 +291,8 @@ func serialize(w io.Writer, data any) error { } func (se *Export) l() logger.Interface { - if se.dlog == nil { - se.dlog = logger.Default + if se.lg == nil { + se.lg = logger.Default } - return se.dlog + return se.lg }