Skip to content

Commit

Permalink
Make console.log more compatible with how browsers and nodejs works
Browse files Browse the repository at this point in the history
fixes #1510
  • Loading branch information
mstoykov committed Jul 30, 2020
1 parent 6f84752 commit c05313f
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 17 deletions.
27 changes: 14 additions & 13 deletions js/console.go
Expand Up @@ -23,7 +23,7 @@ package js
import (
"context"
"os"
"strconv"
"strings"

"github.com/dop251/goja"
"github.com/sirupsen/logrus"
Expand Down Expand Up @@ -64,24 +64,25 @@ func (c console) log(ctx *context.Context, level logrus.Level, msgobj goja.Value
}
}

// TODO this is not how it works anywhere else
// nodejs: https://nodejs.org/api/console.html#console_console_info_data_args
// mdn: https://developer.mozilla.org/en-US/docs/Web/API/Console/log
fields := make(logrus.Fields, len(args)+1)
for i, arg := range args {
fields[strconv.Itoa(i)] = arg.String()
msg := msgobj.String()
if len(args) > 0 {
strs := make([]string, 1+len(args))
strs[0] = msg
for i, v := range args {
strs[i+1] = v.String()
}

msg = strings.Join(strs, " ")
}
msg := msgobj.ToString()
e := c.logger.WithFields(fields)
switch level { //nolint:exhaustive
case logrus.DebugLevel:
e.Debug(msg)
c.logger.Debug(msg)
case logrus.InfoLevel:
e.Info(msg)
c.logger.Info(msg)
case logrus.WarnLevel:
e.Warn(msg)
c.logger.Warn(msg)
case logrus.ErrorLevel:
e.Error(msg)
c.logger.Error(msg)
}
}

Expand Down
8 changes: 4 additions & 4 deletions js/console_test.go
Expand Up @@ -117,8 +117,8 @@ func TestConsole(t *testing.T) {
Data logrus.Fields
}{
`"string"`: {Message: "string", Data: logrus.Fields{"source": "console"}},
`"string","a","b"`: {Message: "string", Data: logrus.Fields{"0": "a", "1": "b", "source": "console"}},
`"string",1,2`: {Message: "string", Data: logrus.Fields{"0": "1", "1": "2", "source": "console"}},
`"string","a","b"`: {Message: "string a b", Data: logrus.Fields{"source": "console"}},
`"string",1,2`: {Message: "string 1 2", Data: logrus.Fields{"source": "console"}},
`{}`: {Message: "[object Object]", Data: logrus.Fields{"source": "console"}},
}
for name, level := range levels {
Expand Down Expand Up @@ -181,8 +181,8 @@ func TestFileConsole(t *testing.T) {
Data logrus.Fields
}{
`"string"`: {Message: "string", Data: logrus.Fields{}},
`"string","a","b"`: {Message: "string", Data: logrus.Fields{"0": "a", "1": "b"}},
`"string",1,2`: {Message: "string", Data: logrus.Fields{"0": "1", "1": "2"}},
`"string","a","b"`: {Message: "string a b", Data: logrus.Fields{}},
`"string",1,2`: {Message: "string 1 2", Data: logrus.Fields{}},
`{}`: {Message: "[object Object]", Data: logrus.Fields{}},
}
preExisting = map[string]bool{
Expand Down

0 comments on commit c05313f

Please sign in to comment.