Add stderr to log messages
This commit is contained in:
parent
f6d1ecd757
commit
9dff066a9c
|
@ -32,12 +32,16 @@ func Exec(binary, url string, options ...Option) error {
|
|||
cmd.Stdout = opts.stdout
|
||||
}
|
||||
|
||||
var stderr = new(bytes.Buffer)
|
||||
if opts.stderr != nil {
|
||||
cmd.Stderr = opts.stderr
|
||||
cmd.Stderr = stderr
|
||||
}
|
||||
|
||||
if err := cmd.Run(); err != nil {
|
||||
return err
|
||||
return &Error{
|
||||
stderr: stderr.String(),
|
||||
child: err,
|
||||
}
|
||||
}
|
||||
|
||||
buf, bufOk := opts.stdout.(*bytes.Buffer)
|
||||
|
|
|
@ -7,9 +7,7 @@ import (
|
|||
"io"
|
||||
"strings"
|
||||
|
||||
"go.fifitido.net/ytdl-web/pkg/utils"
|
||||
"go.fifitido.net/ytdl-web/pkg/ytdl/metadata"
|
||||
"golang.org/x/exp/slog"
|
||||
)
|
||||
|
||||
type Options struct {
|
||||
|
@ -93,14 +91,6 @@ func WithStreamOutput(output io.Writer) Option {
|
|||
}
|
||||
}
|
||||
|
||||
func WithDebug() Option {
|
||||
return func(opts *Options) error {
|
||||
opts.stdout = utils.LoggerWriter(slog.With("module", "ytdl"), slog.LevelDebug)
|
||||
opts.stderr = utils.LoggerWriter(slog.With("module", "ytdl"), slog.LevelDebug)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func WithPlaylistIndex(index int) Option {
|
||||
return func(opts *Options) error {
|
||||
opts.args = append(opts.args, "--playlist-items", fmt.Sprint(index+1))
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
package ytdl
|
||||
|
||||
type Error struct {
|
||||
stderr string
|
||||
child error
|
||||
}
|
||||
|
||||
func (e *Error) Error() string {
|
||||
return e.child.Error()
|
||||
}
|
||||
|
||||
func (e *Error) Stderr() string {
|
||||
return e.stderr
|
||||
}
|
|
@ -2,6 +2,7 @@ package ytdl
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"io"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
@ -63,10 +64,6 @@ func (y *ytdlImpl) baseOptions(url string) []Option {
|
|||
}
|
||||
}
|
||||
|
||||
if y.cfg.IsDevelopment() {
|
||||
options = append(options, WithDebug())
|
||||
}
|
||||
|
||||
return options
|
||||
}
|
||||
|
||||
|
@ -88,7 +85,17 @@ func (y *ytdlImpl) GetMetadata(url string) (*metadata.Metadata, error) {
|
|||
)
|
||||
|
||||
if err := Exec(y.cfg.BinaryPath, url, options...); err != nil {
|
||||
y.logger.Error("failed to get metadata", slog.String("url", url), slog.String("error", err.Error()))
|
||||
attrs := []any{
|
||||
slog.String("url", url),
|
||||
slog.String("error", err.Error()),
|
||||
}
|
||||
|
||||
var ytdlErr *Error
|
||||
if ok := errors.As(err, &ytdlErr); ok {
|
||||
attrs = append(attrs, slog.String("stderr", ytdlErr.Stderr()))
|
||||
}
|
||||
|
||||
y.logger.Error("failed to get metadata", attrs...)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue