mirror of
https://github.com/mattermost/focalboard.git
synced 2024-12-24 13:43:12 +02:00
Replace mlog with server v6 mlog (#1088)
* replace mlog with server v6 mlog * remove FB mlog from plugin
This commit is contained in:
parent
791c600151
commit
b58497e2ea
@ -7,5 +7,6 @@ replace github.com/mattermost/focalboard/server => ../server
|
||||
require (
|
||||
github.com/google/uuid v1.2.0
|
||||
github.com/mattermost/focalboard/server v0.0.0-20210422230105-f5ae0b265a8d
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210824141503-6031b163d8e3
|
||||
github.com/webview/webview v0.0.0-20200724072439-e0c01595b361
|
||||
)
|
||||
|
13
linux/go.sum
13
linux/go.sum
@ -574,10 +574,11 @@ github.com/mattermost/ldap v0.0.0-20201202150706-ee0e6284187d h1:/RJ/UV7M5c7L2TQ
|
||||
github.com/mattermost/ldap v0.0.0-20201202150706-ee0e6284187d/go.mod h1:HLbgMEI5K131jpxGazJ97AxfPDt31osq36YS1oxFQPQ=
|
||||
github.com/mattermost/logr v1.0.13 h1:6F/fM3csvH6Oy5sUpJuW7YyZSzZZAhJm5VcgKMxA2P8=
|
||||
github.com/mattermost/logr v1.0.13/go.mod h1:Mt4DPu1NXMe6JxPdwCC0XBoxXmN9eXOIRPoZarU2PXs=
|
||||
github.com/mattermost/logr/v2 v2.0.4 h1:LiqvzNNfia23hlu1zmmCDmjqmSfwWNsEtFlL4/7jf8o=
|
||||
github.com/mattermost/logr/v2 v2.0.4/go.mod h1:mpPp935r5dIkFDo2y9Q87cQWhFR/4xXpNh0k/y8Hmwg=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210817091833-04b27ce93c02 h1:v2SaNLiD02UAWJVwTvDBkFTqD2GwyPaRJ3vs7yDwcpE=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210817091833-04b27ce93c02/go.mod h1:lRyN5kvq4pllE0+9fGsxneaSRDszzaRISo6Z49YHg+M=
|
||||
github.com/mattermost/logr/v2 v2.0.10/go.mod h1:mpPp935r5dIkFDo2y9Q87cQWhFR/4xXpNh0k/y8Hmwg=
|
||||
github.com/mattermost/logr/v2 v2.0.11 h1:eGg73t/HHkirGq34S+r6geGVuuVVrHDbW26QXCog6aw=
|
||||
github.com/mattermost/logr/v2 v2.0.11/go.mod h1:mpPp935r5dIkFDo2y9Q87cQWhFR/4xXpNh0k/y8Hmwg=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210824141503-6031b163d8e3 h1:QTxrstPliume2trhYjv+Pl3xCkQZBPbgvrvk/F5Iscg=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210824141503-6031b163d8e3/go.mod h1:+S8CsNEPv1FOl1usaPBQ6Gu9+Sm1Cc9YdU/Qh1YMGVI=
|
||||
github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0/go.mod h1:nV5bfVpT//+B1RPD2JvRnxbkLmJEYXmRaaVl15fsXjs=
|
||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
|
||||
@ -917,7 +918,6 @@ github.com/vmihailenco/msgpack/v5 v5.3.4/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q
|
||||
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
|
||||
github.com/webview/webview v0.0.0-20200724072439-e0c01595b361 h1:e0+/fQY5l9NdCwPsEg9S8AgE5lFhZ/6UX+b2KkpIBFg=
|
||||
github.com/webview/webview v0.0.0-20200724072439-e0c01595b361/go.mod h1:rpXAuuHgyEJb6kXcXldlkOjU6y4x+YcASKKXJNUhh0Y=
|
||||
github.com/wiggin77/cfg v1.0.2 h1:NBUX+iJRr+RTncTqTNvajHwzduqbhCQjEqxLHr6Fk7A=
|
||||
github.com/wiggin77/cfg v1.0.2/go.mod h1:b3gotba2e5bXTqTW48DwIFoLc+4lWKP7WPi/CdvZ4aE=
|
||||
github.com/wiggin77/merror v1.0.2/go.mod h1:uQTcIU0Z6jRK4OwqganPYerzQxSFJ4GSHM3aurxxQpg=
|
||||
github.com/wiggin77/merror v1.0.3 h1:8+ZHV+aSnJoYghE3EUThl15C6rvF2TYRSvOSBjdmNR8=
|
||||
@ -976,15 +976,12 @@ go.opentelemetry.io/otel/trace v1.0.0-RC1/go.mod h1:86UHmyHWFEtWjfWPSbu0+d0Pf9Q6
|
||||
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/atomic v1.8.0 h1:CUhrE4N1rqSE6FM9ecihEjRkLQu8cDfgDyoOs83mEY4=
|
||||
go.uber.org/atomic v1.8.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
|
||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
|
||||
go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec=
|
||||
go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
|
||||
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U=
|
||||
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
|
||||
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
|
||||
golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
|
||||
|
@ -10,8 +10,9 @@ import (
|
||||
"github.com/google/uuid"
|
||||
"github.com/mattermost/focalboard/server/server"
|
||||
"github.com/mattermost/focalboard/server/services/config"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/webview/webview"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
var sessionToken string = "su-" + uuid.New().String()
|
||||
@ -31,7 +32,7 @@ func getFreePort() (int, error) {
|
||||
}
|
||||
|
||||
func runServer(port int) (*server.Server, error) {
|
||||
logger := mlog.NewLogger()
|
||||
logger, _ := mlog.NewLogger()
|
||||
|
||||
config := &config.Configuration{
|
||||
ServerRoot: fmt.Sprintf("http://localhost:%d", port),
|
||||
|
@ -7,7 +7,7 @@ replace github.com/mattermost/focalboard/server => ../server
|
||||
require (
|
||||
github.com/mattermost/focalboard/server v0.0.0-20210525112228-f43e4028dbdc
|
||||
github.com/mattermost/mattermost-plugin-api v0.0.20
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210819192026-ab0e82d65692
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210824141503-6031b163d8e3
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/stretchr/testify v1.7.0
|
||||
)
|
||||
|
@ -582,14 +582,14 @@ github.com/mattermost/ldap v0.0.0-20201202150706-ee0e6284187d h1:/RJ/UV7M5c7L2TQ
|
||||
github.com/mattermost/ldap v0.0.0-20201202150706-ee0e6284187d/go.mod h1:HLbgMEI5K131jpxGazJ97AxfPDt31osq36YS1oxFQPQ=
|
||||
github.com/mattermost/logr v1.0.13 h1:6F/fM3csvH6Oy5sUpJuW7YyZSzZZAhJm5VcgKMxA2P8=
|
||||
github.com/mattermost/logr v1.0.13/go.mod h1:Mt4DPu1NXMe6JxPdwCC0XBoxXmN9eXOIRPoZarU2PXs=
|
||||
github.com/mattermost/logr/v2 v2.0.4/go.mod h1:mpPp935r5dIkFDo2y9Q87cQWhFR/4xXpNh0k/y8Hmwg=
|
||||
github.com/mattermost/logr/v2 v2.0.10 h1:i6rJbuX/EkBM9maM8M0eJ3rxB+fsBKNslPvzSlA2w/M=
|
||||
github.com/mattermost/logr/v2 v2.0.10/go.mod h1:mpPp935r5dIkFDo2y9Q87cQWhFR/4xXpNh0k/y8Hmwg=
|
||||
github.com/mattermost/logr/v2 v2.0.11 h1:eGg73t/HHkirGq34S+r6geGVuuVVrHDbW26QXCog6aw=
|
||||
github.com/mattermost/logr/v2 v2.0.11/go.mod h1:mpPp935r5dIkFDo2y9Q87cQWhFR/4xXpNh0k/y8Hmwg=
|
||||
github.com/mattermost/mattermost-plugin-api v0.0.20 h1:7qvZBb9JmYKAx6iSJXP/8Sd3dM4efMrZSITyC/bPA1o=
|
||||
github.com/mattermost/mattermost-plugin-api v0.0.20/go.mod h1:473XiIxIyNqOsm5jmU3USkO+XWk7iLPVhLwKXR2cdkY=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210817091833-04b27ce93c02/go.mod h1:lRyN5kvq4pllE0+9fGsxneaSRDszzaRISo6Z49YHg+M=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210819192026-ab0e82d65692 h1:X0AvrYQsLFOaS02jNDJgnZmkESII27F4lOV+f7RCV5A=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210819192026-ab0e82d65692/go.mod h1:+S8CsNEPv1FOl1usaPBQ6Gu9+Sm1Cc9YdU/Qh1YMGVI=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210824141503-6031b163d8e3 h1:QTxrstPliume2trhYjv+Pl3xCkQZBPbgvrvk/F5Iscg=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210824141503-6031b163d8e3/go.mod h1:+S8CsNEPv1FOl1usaPBQ6Gu9+Sm1Cc9YdU/Qh1YMGVI=
|
||||
github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0/go.mod h1:nV5bfVpT//+B1RPD2JvRnxbkLmJEYXmRaaVl15fsXjs=
|
||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
|
||||
|
@ -8,7 +8,6 @@ import (
|
||||
|
||||
"github.com/mattermost/focalboard/server/server"
|
||||
"github.com/mattermost/focalboard/server/services/config"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
"github.com/mattermost/focalboard/server/services/store/mattermostauthlayer"
|
||||
"github.com/mattermost/focalboard/server/services/store/sqlstore"
|
||||
@ -17,6 +16,7 @@ import (
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/model"
|
||||
"github.com/mattermost/mattermost-server/v6/plugin"
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
// Plugin implements the interface expected by the Mattermost server to communicate between the server and plugin processes.
|
||||
@ -90,7 +90,7 @@ func (p *Plugin) OnActivate() error {
|
||||
filesS3Config.Trace = *mmconfig.FileSettings.AmazonS3Trace
|
||||
}
|
||||
|
||||
logger := mlog.NewLogger()
|
||||
logger, _ := mlog.NewLogger()
|
||||
cfgJSON := defaultLoggingConfig()
|
||||
err := logger.Configure("", cfgJSON)
|
||||
if err != nil {
|
||||
|
@ -8,7 +8,8 @@ import (
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/mattermost/focalboard/server/services/audit"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
type AdminSetPasswordData struct {
|
||||
|
@ -15,9 +15,10 @@ import (
|
||||
"github.com/mattermost/focalboard/server/app"
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/audit"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
"github.com/mattermost/focalboard/server/utils"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -15,7 +15,8 @@ import (
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/audit"
|
||||
"github.com/mattermost/focalboard/server/services/auth"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -5,10 +5,11 @@ import (
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/config"
|
||||
"github.com/mattermost/focalboard/server/services/metrics"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
"github.com/mattermost/focalboard/server/services/webhook"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/filestore"
|
||||
)
|
||||
|
||||
|
@ -4,9 +4,10 @@ import (
|
||||
"github.com/google/uuid"
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/auth"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
|
@ -20,7 +20,8 @@ var mockUser = &model.User{
|
||||
}
|
||||
|
||||
func TestLogin(t *testing.T) {
|
||||
th := SetupTestHelper(t)
|
||||
th, tearDown := SetupTestHelper(t)
|
||||
defer tearDown()
|
||||
|
||||
testcases := []struct {
|
||||
title string
|
||||
@ -58,7 +59,8 @@ func TestLogin(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetUser(t *testing.T) {
|
||||
th := SetupTestHelper(t)
|
||||
th, tearDown := SetupTestHelper(t)
|
||||
defer tearDown()
|
||||
|
||||
testcases := []struct {
|
||||
title string
|
||||
@ -87,7 +89,8 @@ func TestGetUser(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestRegisterUser(t *testing.T) {
|
||||
th := SetupTestHelper(t)
|
||||
th, tearDown := SetupTestHelper(t)
|
||||
defer tearDown()
|
||||
|
||||
testcases := []struct {
|
||||
title string
|
||||
@ -123,7 +126,8 @@ func TestRegisterUser(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestUpdateUserPassword(t *testing.T) {
|
||||
th := SetupTestHelper(t)
|
||||
th, tearDown := SetupTestHelper(t)
|
||||
defer tearDown()
|
||||
|
||||
testcases := []struct {
|
||||
title string
|
||||
@ -153,7 +157,8 @@ func TestUpdateUserPassword(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestChangePassword(t *testing.T) {
|
||||
th := SetupTestHelper(t)
|
||||
th, tearDown := SetupTestHelper(t)
|
||||
defer tearDown()
|
||||
|
||||
testcases := []struct {
|
||||
title string
|
||||
|
@ -19,7 +19,8 @@ func (be blockError) Error() string {
|
||||
}
|
||||
|
||||
func TestGetParentID(t *testing.T) {
|
||||
th := SetupTestHelper(t)
|
||||
th, tearDown := SetupTestHelper(t)
|
||||
defer tearDown()
|
||||
|
||||
container := st.Container{
|
||||
WorkspaceID: "0",
|
||||
@ -40,7 +41,8 @@ func TestGetParentID(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestInsertBlock(t *testing.T) {
|
||||
th := SetupTestHelper(t)
|
||||
th, tearDown := SetupTestHelper(t)
|
||||
defer tearDown()
|
||||
|
||||
container := st.Container{
|
||||
WorkspaceID: "0",
|
||||
|
@ -6,9 +6,10 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/utils"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/filestore"
|
||||
)
|
||||
|
||||
|
@ -10,26 +10,27 @@ import (
|
||||
"github.com/mattermost/focalboard/server/auth"
|
||||
"github.com/mattermost/focalboard/server/services/config"
|
||||
"github.com/mattermost/focalboard/server/services/metrics"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/store/mockstore"
|
||||
"github.com/mattermost/focalboard/server/services/webhook"
|
||||
"github.com/mattermost/focalboard/server/ws"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/filestore/mocks"
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
type TestHelper struct {
|
||||
App *App
|
||||
Store *mockstore.MockStore
|
||||
App *App
|
||||
Store *mockstore.MockStore
|
||||
logger *mlog.Logger
|
||||
}
|
||||
|
||||
func SetupTestHelper(t *testing.T) *TestHelper {
|
||||
func SetupTestHelper(t *testing.T) (*TestHelper, func()) {
|
||||
ctrl := gomock.NewController(t)
|
||||
defer ctrl.Finish()
|
||||
cfg := config.Configuration{}
|
||||
store := mockstore.NewMockStore(ctrl)
|
||||
auth := auth.New(&cfg, store)
|
||||
logger := mlog.CreateTestLogger(t)
|
||||
logger := mlog.CreateConsoleTestLogger(false, mlog.LvlDebug)
|
||||
sessionToken := "TESTTOKEN"
|
||||
wsserver := ws.NewServer(auth, sessionToken, false, logger)
|
||||
webhook := webhook.NewClient(&cfg, logger)
|
||||
@ -45,8 +46,15 @@ func SetupTestHelper(t *testing.T) *TestHelper {
|
||||
}
|
||||
app2 := New(&cfg, wsserver, appServices)
|
||||
|
||||
return &TestHelper{
|
||||
App: app2,
|
||||
Store: store,
|
||||
tearDown := func() {
|
||||
if logger != nil {
|
||||
_ = logger.Shutdown()
|
||||
}
|
||||
}
|
||||
|
||||
return &TestHelper{
|
||||
App: app2,
|
||||
Store: store,
|
||||
logger: logger,
|
||||
}, tearDown
|
||||
}
|
||||
|
@ -14,7 +14,9 @@ import (
|
||||
)
|
||||
|
||||
func TestGetSharing(t *testing.T) {
|
||||
th := SetupTestHelper(t)
|
||||
th, tearDown := SetupTestHelper(t)
|
||||
defer tearDown()
|
||||
|
||||
container := st.Container{
|
||||
WorkspaceID: utils.CreateGUID(),
|
||||
}
|
||||
@ -61,7 +63,8 @@ func TestGetSharing(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestUpsertSharing(t *testing.T) {
|
||||
th := SetupTestHelper(t)
|
||||
th, tearDown := SetupTestHelper(t)
|
||||
defer tearDown()
|
||||
|
||||
container := st.Container{
|
||||
WorkspaceID: utils.CreateGUID(),
|
||||
|
@ -5,8 +5,9 @@ import (
|
||||
"errors"
|
||||
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/utils"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
func (a *App) GetRootWorkspace() (*model.Workspace, error) {
|
||||
|
@ -12,8 +12,8 @@ require (
|
||||
github.com/gorilla/websocket v1.4.2
|
||||
github.com/lib/pq v1.10.2
|
||||
github.com/magiconair/properties v1.8.5 // indirect
|
||||
github.com/mattermost/logr/v2 v2.0.4
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210817091833-04b27ce93c02
|
||||
github.com/mattermost/logr/v2 v2.0.11 // indirect
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210824141503-6031b163d8e3
|
||||
github.com/mattn/go-sqlite3 v2.0.3+incompatible
|
||||
github.com/mitchellh/mapstructure v1.4.1 // indirect
|
||||
github.com/oklog/run v1.1.0
|
||||
|
@ -579,10 +579,12 @@ github.com/mattermost/ldap v0.0.0-20201202150706-ee0e6284187d h1:/RJ/UV7M5c7L2TQ
|
||||
github.com/mattermost/ldap v0.0.0-20201202150706-ee0e6284187d/go.mod h1:HLbgMEI5K131jpxGazJ97AxfPDt31osq36YS1oxFQPQ=
|
||||
github.com/mattermost/logr v1.0.13 h1:6F/fM3csvH6Oy5sUpJuW7YyZSzZZAhJm5VcgKMxA2P8=
|
||||
github.com/mattermost/logr v1.0.13/go.mod h1:Mt4DPu1NXMe6JxPdwCC0XBoxXmN9eXOIRPoZarU2PXs=
|
||||
github.com/mattermost/logr/v2 v2.0.4 h1:LiqvzNNfia23hlu1zmmCDmjqmSfwWNsEtFlL4/7jf8o=
|
||||
github.com/mattermost/logr/v2 v2.0.4/go.mod h1:mpPp935r5dIkFDo2y9Q87cQWhFR/4xXpNh0k/y8Hmwg=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210817091833-04b27ce93c02 h1:v2SaNLiD02UAWJVwTvDBkFTqD2GwyPaRJ3vs7yDwcpE=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210817091833-04b27ce93c02/go.mod h1:lRyN5kvq4pllE0+9fGsxneaSRDszzaRISo6Z49YHg+M=
|
||||
github.com/mattermost/logr/v2 v2.0.10 h1:i6rJbuX/EkBM9maM8M0eJ3rxB+fsBKNslPvzSlA2w/M=
|
||||
github.com/mattermost/logr/v2 v2.0.10/go.mod h1:mpPp935r5dIkFDo2y9Q87cQWhFR/4xXpNh0k/y8Hmwg=
|
||||
github.com/mattermost/logr/v2 v2.0.11 h1:eGg73t/HHkirGq34S+r6geGVuuVVrHDbW26QXCog6aw=
|
||||
github.com/mattermost/logr/v2 v2.0.11/go.mod h1:mpPp935r5dIkFDo2y9Q87cQWhFR/4xXpNh0k/y8Hmwg=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210824141503-6031b163d8e3 h1:QTxrstPliume2trhYjv+Pl3xCkQZBPbgvrvk/F5Iscg=
|
||||
github.com/mattermost/mattermost-server/v6 v6.0.0-20210824141503-6031b163d8e3/go.mod h1:+S8CsNEPv1FOl1usaPBQ6Gu9+Sm1Cc9YdU/Qh1YMGVI=
|
||||
github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0/go.mod h1:nV5bfVpT//+B1RPD2JvRnxbkLmJEYXmRaaVl15fsXjs=
|
||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
|
||||
@ -923,7 +925,6 @@ github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49u
|
||||
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
|
||||
github.com/vmihailenco/msgpack/v5 v5.3.4/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
|
||||
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
|
||||
github.com/wiggin77/cfg v1.0.2 h1:NBUX+iJRr+RTncTqTNvajHwzduqbhCQjEqxLHr6Fk7A=
|
||||
github.com/wiggin77/cfg v1.0.2/go.mod h1:b3gotba2e5bXTqTW48DwIFoLc+4lWKP7WPi/CdvZ4aE=
|
||||
github.com/wiggin77/merror v1.0.2/go.mod h1:uQTcIU0Z6jRK4OwqganPYerzQxSFJ4GSHM3aurxxQpg=
|
||||
github.com/wiggin77/merror v1.0.3 h1:8+ZHV+aSnJoYghE3EUThl15C6rvF2TYRSvOSBjdmNR8=
|
||||
@ -982,15 +983,12 @@ go.opentelemetry.io/otel/trace v1.0.0-RC1/go.mod h1:86UHmyHWFEtWjfWPSbu0+d0Pf9Q6
|
||||
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/atomic v1.8.0 h1:CUhrE4N1rqSE6FM9ecihEjRkLQu8cDfgDyoOs83mEY4=
|
||||
go.uber.org/atomic v1.8.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
|
||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
|
||||
go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec=
|
||||
go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
|
||||
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U=
|
||||
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
|
||||
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
|
||||
golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
|
||||
|
@ -8,7 +8,8 @@ import (
|
||||
"github.com/mattermost/focalboard/server/client"
|
||||
"github.com/mattermost/focalboard/server/server"
|
||||
"github.com/mattermost/focalboard/server/services/config"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
type TestHelper struct {
|
||||
@ -65,7 +66,7 @@ func getTestConfig() *config.Configuration {
|
||||
}
|
||||
|
||||
func newTestServer(singleUserToken string) *server.Server {
|
||||
logger := mlog.NewLogger()
|
||||
logger, _ := mlog.NewLogger()
|
||||
if err := logger.Configure("", getTestConfig().LoggingCfgJSON); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ import (
|
||||
"github.com/mattermost/focalboard/server/services/config"
|
||||
)
|
||||
import (
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
// Active server used with shared code (dll)
|
||||
@ -94,7 +94,7 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
logger := mlog.NewLogger()
|
||||
logger, _ := mlog.NewLogger()
|
||||
cfgJSON := config.LoggingCfgJSON
|
||||
if config.LoggingCfgFile == "" && cfgJSON == "" {
|
||||
// if no logging defined, use default config (console output)
|
||||
@ -108,7 +108,7 @@ func main() {
|
||||
defer func() { _ = logger.Shutdown() }()
|
||||
|
||||
if logger.HasTargets() {
|
||||
restore := logger.RedirectStdLog(mlog.Info, mlog.String("src", "stdlog"))
|
||||
restore := logger.RedirectStdLog(mlog.LvlInfo, mlog.String("src", "stdlog"))
|
||||
defer restore()
|
||||
}
|
||||
|
||||
@ -215,7 +215,7 @@ func startServer(webPath string, filesPath string, port int, singleUserToken, db
|
||||
return
|
||||
}
|
||||
|
||||
logger := mlog.NewLogger()
|
||||
logger, _ := mlog.NewLogger()
|
||||
err = logger.Configure(config.LoggingCfgFile, config.LoggingCfgJSON)
|
||||
if err != nil {
|
||||
log.Fatal("Error in config file for logger: ", err)
|
||||
|
@ -22,7 +22,6 @@ import (
|
||||
"github.com/mattermost/focalboard/server/services/audit"
|
||||
"github.com/mattermost/focalboard/server/services/config"
|
||||
"github.com/mattermost/focalboard/server/services/metrics"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/scheduler"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
"github.com/mattermost/focalboard/server/services/store/mattermostauthlayer"
|
||||
@ -33,6 +32,8 @@ import (
|
||||
"github.com/mattermost/focalboard/server/ws"
|
||||
"github.com/oklog/run"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/filestore"
|
||||
"github.com/mattermost/mattermost-server/v6/utils"
|
||||
)
|
||||
@ -104,9 +105,12 @@ func New(cfg *config.Configuration, singleUserToken string, db store.Store, logg
|
||||
metricsService := metrics.NewMetrics(instanceInfo)
|
||||
|
||||
// Init audit
|
||||
auditService := audit.NewAudit()
|
||||
if err2 := auditService.Configure(cfg.AuditCfgFile, cfg.AuditCfgJSON); err2 != nil {
|
||||
return nil, fmt.Errorf("unable to initialize the audit service: %w", err2)
|
||||
auditService, errAudit := audit.NewAudit()
|
||||
if errAudit != nil {
|
||||
return nil, fmt.Errorf("unable to create the audit service: %w", errAudit)
|
||||
}
|
||||
if err := auditService.Configure(cfg.AuditCfgFile, cfg.AuditCfgJSON); err != nil {
|
||||
return nil, fmt.Errorf("unable to initialize the audit service: %w", err)
|
||||
}
|
||||
|
||||
appServices := app.Services{
|
||||
@ -237,7 +241,7 @@ func (s *Server) Start() error {
|
||||
s.logger.Error("Error updating metrics", mlog.String("group", "blocks"), mlog.Err(err))
|
||||
return
|
||||
}
|
||||
s.logger.Log(mlog.Metrics, "Block metrics collected", mlog.Map("block_counts", blockCounts))
|
||||
s.logger.Log(mlog.LvlFBMetrics, "Block metrics collected", mlog.Map("block_counts", blockCounts))
|
||||
for blockType, count := range blockCounts {
|
||||
s.metricsService.ObserveBlockCount(blockType, count)
|
||||
}
|
||||
@ -246,7 +250,7 @@ func (s *Server) Start() error {
|
||||
s.logger.Error("Error updating metrics", mlog.String("group", "workspaces"), mlog.Err(err))
|
||||
return
|
||||
}
|
||||
s.logger.Log(mlog.Metrics, "Workspace metrics collected", mlog.Int64("workspace_count", workspaceCount))
|
||||
s.logger.Log(mlog.LvlFBMetrics, "Workspace metrics collected", mlog.Int64("workspace_count", workspaceCount))
|
||||
s.metricsService.ObserveWorkspaceCount(workspaceCount)
|
||||
}
|
||||
// metricsUpdater() Calling this immediately causes integration unit tests to fail.
|
||||
|
@ -1,7 +1,7 @@
|
||||
package audit
|
||||
|
||||
import (
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -34,12 +34,14 @@ type Audit struct {
|
||||
}
|
||||
|
||||
// NewAudit creates a new Audit instance which can be configured via `(*Audit).Configure`.
|
||||
func NewAudit(options ...mlog.Option) *Audit {
|
||||
logger := mlog.NewLogger(options...)
|
||||
|
||||
func NewAudit(options ...mlog.Option) (*Audit, error) {
|
||||
logger, err := mlog.NewLogger(options...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Audit{
|
||||
auditLogger: logger,
|
||||
}
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Configure provides a new configuration for this audit service.
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
package audit
|
||||
|
||||
import "github.com/mattermost/focalboard/server/services/mlog"
|
||||
import "github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
|
||||
// Meta represents metadata that can be added to a audit record as name/value pairs.
|
||||
type Meta struct {
|
||||
|
@ -3,9 +3,10 @@ package metrics
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
// Service prometheus to run the server.
|
||||
@ -19,7 +20,7 @@ func NewMetricsServer(address string, metricsService *Metrics, logger *mlog.Logg
|
||||
&http.Server{
|
||||
Addr: address,
|
||||
Handler: promhttp.HandlerFor(metricsService.registry, promhttp.HandlerOpts{
|
||||
ErrorLog: logger.StdLogger(mlog.Error),
|
||||
ErrorLog: logger.StdLogger(mlog.LvlError),
|
||||
}),
|
||||
},
|
||||
}
|
||||
|
@ -1,42 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
//nolint:gomnd
|
||||
package mlog
|
||||
|
||||
import "github.com/mattermost/logr/v2"
|
||||
|
||||
// Standard levels.
|
||||
var (
|
||||
Panic = logr.Panic // ID = 0
|
||||
Fatal = logr.Fatal // ID = 1
|
||||
Error = logr.Error // ID = 2
|
||||
Warn = logr.Warn // ID = 3
|
||||
Info = logr.Info // ID = 4
|
||||
Debug = logr.Debug // ID = 5
|
||||
Trace = logr.Trace // ID = 6
|
||||
StdAll = []Level{Panic, Fatal, Error, Warn, Info, Debug, Trace}
|
||||
)
|
||||
|
||||
// Register custom (discrete) levels here.
|
||||
// !!!!! Custom ID's must be between 20 and 32,768 !!!!!!
|
||||
var (
|
||||
/* Example
|
||||
// used by the audit system
|
||||
AuditAPI = Level{ID: 100, Name: "audit-api"}
|
||||
AuditContent = Level{ID: 101, Name: "audit-content"}
|
||||
AuditPerms = Level{ID: 102, Name: "audit-permissions"}
|
||||
AuditCLI = Level{ID: 103, Name: "audit-cli"}
|
||||
*/
|
||||
|
||||
// add more here ...
|
||||
Telemetry = Level{ID: 500, Name: "telemetry"}
|
||||
Metrics = Level{ID: 501, Name: "metrics"}
|
||||
)
|
||||
|
||||
// Combinations for LogM (log multi).
|
||||
var (
|
||||
/* Example
|
||||
MAuditAll = []Level{AuditAPI, AuditContent, AuditPerms, AuditCLI}
|
||||
*/
|
||||
)
|
@ -1,281 +0,0 @@
|
||||
// Package mlog provides a simple wrapper around Logr.
|
||||
package mlog
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"runtime"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/mattermost/logr/v2"
|
||||
logrcfg "github.com/mattermost/logr/v2/config"
|
||||
)
|
||||
|
||||
const (
|
||||
ShutdownTimeout = time.Second * 15
|
||||
)
|
||||
|
||||
var (
|
||||
mlogPkg string
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Calc current package name
|
||||
pcs := make([]uintptr, 2)
|
||||
_ = runtime.Callers(0, pcs)
|
||||
tmp := runtime.FuncForPC(pcs[1]).Name()
|
||||
mlogPkg = GetPackageName(tmp)
|
||||
}
|
||||
|
||||
// Type and function aliases from Logr to limit the spread of dependencies throughout Focalboard.
|
||||
type Field = logr.Field
|
||||
type Level = logr.Level
|
||||
type Option = logr.Option
|
||||
type Target = logr.Target
|
||||
type LogRec = logr.LogRec
|
||||
type LogCloner = logr.LogCloner
|
||||
type MetricsCollector = logr.MetricsCollector
|
||||
|
||||
// Any picks the best supported field type based on type of val.
|
||||
// For best performance when passing a struct (or struct pointer),
|
||||
// implement `logr.LogWriter` on the struct, otherwise reflection
|
||||
// will be used to generate a string representation.
|
||||
var Any = logr.Any
|
||||
|
||||
// Int64 constructs a field containing a key and Int64 value.
|
||||
var Int64 = logr.Int64
|
||||
|
||||
// Int32 constructs a field containing a key and Int32 value.
|
||||
var Int32 = logr.Int32
|
||||
|
||||
// Int constructs a field containing a key and Int value.
|
||||
var Int = logr.Int
|
||||
|
||||
// Uint64 constructs a field containing a key and Uint64 value.
|
||||
var Uint64 = logr.Uint64
|
||||
|
||||
// Uint32 constructs a field containing a key and Uint32 value.
|
||||
var Uint32 = logr.Uint32
|
||||
|
||||
// Uint constructs a field containing a key and Uint value.
|
||||
var Uint = logr.Uint
|
||||
|
||||
// Float64 constructs a field containing a key and Float64 value.
|
||||
var Float64 = logr.Float64
|
||||
|
||||
// Float32 constructs a field containing a key and Float32 value.
|
||||
var Float32 = logr.Float32
|
||||
|
||||
// String constructs a field containing a key and String value.
|
||||
var String = logr.String
|
||||
|
||||
// Stringer constructs a field containing a key and a fmt.Stringer value.
|
||||
// The fmt.Stringer's `String` method is called lazily.
|
||||
var Stringer = logr.Stringer
|
||||
|
||||
// Err constructs a field containing a default key ("error") and error value.
|
||||
var Err = logr.Err
|
||||
|
||||
// NamedErr constructs a field containing a key and error value.
|
||||
var NamedErr = logr.NamedErr
|
||||
|
||||
// Bool constructs a field containing a key and bool value.
|
||||
var Bool = logr.Bool
|
||||
|
||||
// Time constructs a field containing a key and time.Time value.
|
||||
var Time = logr.Time
|
||||
|
||||
// Duration constructs a field containing a key and time.Duration value.
|
||||
var Duration = logr.Duration
|
||||
|
||||
// Millis constructs a field containing a key and timestamp value.
|
||||
// The timestamp is expected to be milliseconds since Jan 1, 1970 UTC.
|
||||
var Millis = logr.Millis
|
||||
|
||||
// Array constructs a field containing a key and array value.
|
||||
var Array = logr.Array
|
||||
|
||||
// Map constructs a field containing a key and map value.
|
||||
var Map = logr.Map
|
||||
|
||||
// LoggerConfig is a map of LogTarget configurations.
|
||||
type LoggerConfig map[string]logrcfg.TargetCfg
|
||||
|
||||
func (lc LoggerConfig) append(cfg LoggerConfig) {
|
||||
for k, v := range cfg {
|
||||
lc[k] = v
|
||||
}
|
||||
}
|
||||
|
||||
// Logger provides a thin wrapper around a Logr instance. This is a struct instead of an interface
|
||||
// so that there are no allocations on the heap each interface method invocation. Normally not
|
||||
// something to be concerned about, but logging calls for disabled levels should have as little CPU
|
||||
// and memory impact as possible. Most of these wrapper calls will be inlined as well.
|
||||
type Logger struct {
|
||||
log *logr.Logger
|
||||
}
|
||||
|
||||
// NewLogger creates a new Logger instance which can be configured via `(*Logger).Configure`.
|
||||
func NewLogger(options ...Option) *Logger {
|
||||
options = append(options, logr.StackFilter(GetPackageName(mlogPkg)))
|
||||
|
||||
lgr, _ := logr.New(options...)
|
||||
log := lgr.NewLogger()
|
||||
|
||||
return &Logger{
|
||||
log: &log,
|
||||
}
|
||||
}
|
||||
|
||||
// Configure provides a new configuration for this logger.
|
||||
// Zero or more sources of config can be provided:
|
||||
// cfgFile - path to file containing JSON
|
||||
// cfgEscaped - JSON string probably from ENV var
|
||||
//
|
||||
// For each case JSON containing log targets is provided. Target name collisions are resolved
|
||||
// using the following precedence:
|
||||
// cfgFile > cfgEscaped
|
||||
func (l *Logger) Configure(cfgFile string, cfgEscaped string) error {
|
||||
cfgMap := make(LoggerConfig)
|
||||
|
||||
// Add config from file
|
||||
if cfgFile != "" {
|
||||
b, err := ioutil.ReadFile(cfgFile)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error reading logger config file %s: %w", cfgFile, err)
|
||||
}
|
||||
|
||||
var mapCfgFile LoggerConfig
|
||||
if err := json.Unmarshal(b, &mapCfgFile); err != nil {
|
||||
return fmt.Errorf("error decoding logger config file %s: %w", cfgFile, err)
|
||||
}
|
||||
cfgMap.append(mapCfgFile)
|
||||
}
|
||||
|
||||
// Add config from escaped json string
|
||||
if cfgEscaped != "" {
|
||||
var mapCfgEscaped LoggerConfig
|
||||
if err := json.Unmarshal([]byte(cfgEscaped), &mapCfgEscaped); err != nil {
|
||||
return fmt.Errorf("error decoding logger config as escaped json: %w", err)
|
||||
}
|
||||
cfgMap.append(mapCfgEscaped)
|
||||
}
|
||||
|
||||
if len(cfgMap) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return logrcfg.ConfigureTargets(l.log.Logr(), cfgMap, nil)
|
||||
}
|
||||
|
||||
// With creates a new Logger with the specified fields. This is a light-weight
|
||||
// operation and can be called on demand.
|
||||
func (l *Logger) With(fields ...Field) *Logger {
|
||||
logWith := l.log.With(fields...)
|
||||
return &Logger{
|
||||
log: &logWith,
|
||||
}
|
||||
}
|
||||
|
||||
// IsLevelEnabled returns true only if at least one log target is
|
||||
// configured to emit the specified log level. Use this check when
|
||||
// gathering the log info may be expensive.
|
||||
//
|
||||
// Note, transformations and serializations done via fields are already
|
||||
// lazily evaluated and don't require this check beforehand.
|
||||
func (l *Logger) IsLevelEnabled(level Level) bool {
|
||||
return l.log.IsLevelEnabled(level)
|
||||
}
|
||||
|
||||
// Log emits the log record for any targets configured for the specified level.
|
||||
func (l *Logger) Log(level Level, msg string, fields ...Field) {
|
||||
l.log.Log(level, msg, fields...)
|
||||
}
|
||||
|
||||
// LogM emits the log record for any targets configured for the specified levels.
|
||||
// Equivalent to calling `Log` once for each level.
|
||||
func (l *Logger) LogM(levels []Level, msg string, fields ...Field) {
|
||||
l.log.LogM(levels, msg, fields...)
|
||||
}
|
||||
|
||||
// Convenience method equivalent to calling `Log` with the `Trace` level.
|
||||
func (l *Logger) Trace(msg string, fields ...Field) {
|
||||
l.log.Trace(msg, fields...)
|
||||
}
|
||||
|
||||
// Convenience method equivalent to calling `Log` with the `Debug` level.
|
||||
func (l *Logger) Debug(msg string, fields ...Field) {
|
||||
l.log.Debug(msg, fields...)
|
||||
}
|
||||
|
||||
// Convenience method equivalent to calling `Log` with the `Info` level.
|
||||
func (l *Logger) Info(msg string, fields ...Field) {
|
||||
l.log.Info(msg, fields...)
|
||||
}
|
||||
|
||||
// Convenience method equivalent to calling `Log` with the `Warn` level.
|
||||
func (l *Logger) Warn(msg string, fields ...Field) {
|
||||
l.log.Warn(msg, fields...)
|
||||
}
|
||||
|
||||
// Convenience method equivalent to calling `Log` with the `Error` level.
|
||||
func (l *Logger) Error(msg string, fields ...Field) {
|
||||
l.log.Error(msg, fields...)
|
||||
}
|
||||
|
||||
// Convenience method equivalent to calling `Log` with the `Fatal` level,
|
||||
// followed by `os.Exit(1)`.
|
||||
func (l *Logger) Fatal(msg string, fields ...Field) {
|
||||
l.log.Log(logr.Fatal, msg, fields...)
|
||||
_ = l.Shutdown()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// HasTargets returns true if at least one log target has been added.
|
||||
func (l *Logger) HasTargets() bool {
|
||||
return l.log.Logr().HasTargets()
|
||||
}
|
||||
|
||||
// StdLogger creates a standard logger backed by this logger.
|
||||
// All log records are output with the specified level.
|
||||
func (l *Logger) StdLogger(level Level) *log.Logger {
|
||||
return l.log.StdLogger(level)
|
||||
}
|
||||
|
||||
// RedirectStdLog redirects output from the standard library's package-global logger
|
||||
// to this logger at the specified level and with zero or more Field's. Since this logger already
|
||||
// handles caller annotations, timestamps, etc., it automatically disables the standard
|
||||
// library's annotations and prefixing.
|
||||
// A function is returned that restores the original prefix and flags and resets the standard
|
||||
// library's output to os.Stdout.
|
||||
func (l *Logger) RedirectStdLog(level Level, fields ...Field) func() {
|
||||
return l.log.Logr().RedirectStdLog(level, fields...)
|
||||
}
|
||||
|
||||
// Shutdown shuts down the logger after making best efforts to flush any
|
||||
// remaining records.
|
||||
func (l *Logger) Shutdown() error {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), ShutdownTimeout)
|
||||
defer cancel()
|
||||
return l.log.Logr().ShutdownWithTimeout(ctx)
|
||||
}
|
||||
|
||||
// GetPackageName reduces a fully qualified function name to the package name
|
||||
// By sirupsen: https://github.com/sirupsen/logrus/blob/master/entry.go
|
||||
func GetPackageName(f string) string {
|
||||
for {
|
||||
lastPeriod := strings.LastIndex(f, ".")
|
||||
lastSlash := strings.LastIndex(f, "/")
|
||||
if lastPeriod > lastSlash {
|
||||
f = f[:lastPeriod]
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
return f
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
package mlog
|
||||
|
||||
import "github.com/mattermost/logr/v2"
|
||||
|
||||
// MaxQueueSize is the maximum number of log records that can be queued.
|
||||
// If exceeded, `OnQueueFull` is called which determines if the log
|
||||
// record will be dropped or block until add is successful.
|
||||
// Defaults to DefaultMaxQueueSize.
|
||||
func MaxQueueSize(size int) Option {
|
||||
return logr.MaxQueueSize(size)
|
||||
}
|
||||
|
||||
// OnLoggerError, when not nil, is called any time an internal
|
||||
// logging error occurs. For example, this can happen when a
|
||||
// target cannot connect to its data sink.
|
||||
func OnLoggerError(f func(error)) Option {
|
||||
return logr.OnLoggerError(f)
|
||||
}
|
||||
|
||||
// OnQueueFull, when not nil, is called on an attempt to add
|
||||
// a log record to a full Logr queue.
|
||||
// `MaxQueueSize` can be used to modify the maximum queue size.
|
||||
// This function should return quickly, with a bool indicating whether
|
||||
// the log record should be dropped (true) or block until the log record
|
||||
// is successfully added (false). If nil then blocking (false) is assumed.
|
||||
func OnQueueFull(f func(rec *LogRec, maxQueueSize int) bool) Option {
|
||||
return logr.OnQueueFull(f)
|
||||
}
|
||||
|
||||
// OnTargetQueueFull, when not nil, is called on an attempt to add
|
||||
// a log record to a full target queue provided the target supports reporting
|
||||
// this condition.
|
||||
// This function should return quickly, with a bool indicating whether
|
||||
// the log record should be dropped (true) or block until the log record
|
||||
// is successfully added (false). If nil then blocking (false) is assumed.
|
||||
func OnTargetQueueFull(f func(target Target, rec *LogRec, maxQueueSize int) bool) Option {
|
||||
return logr.OnTargetQueueFull(f)
|
||||
}
|
||||
|
||||
// SetMetricsCollector enables metrics collection by supplying a MetricsCollector.
|
||||
// The MetricsCollector provides counters and gauges that are updated by log targets.
|
||||
// `updateFreqMillis` determines how often polled metrics are updated. Defaults to 15000 (15 seconds)
|
||||
// and must be at least 250 so we don't peg the CPU.
|
||||
func SetMetricsCollector(collector MetricsCollector, updateFreqMillis int64) Option {
|
||||
return logr.SetMetricsCollector(collector, updateFreqMillis)
|
||||
}
|
||||
|
||||
// StackFilter provides a list of package names to exclude from the top of
|
||||
// stack traces. The Logr packages are automatically filtered.
|
||||
func StackFilter(pkg ...string) Option {
|
||||
return logr.StackFilter(pkg...)
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
package mlog
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/logr/v2"
|
||||
"github.com/mattermost/logr/v2/formatters"
|
||||
)
|
||||
|
||||
// CreateTestLogger creates a logger for unit tests. Log records are output to `(*testing.T)Log`.
|
||||
func CreateTestLogger(t *testing.T, levels ...Field) (logger *Logger) {
|
||||
logger = NewLogger()
|
||||
|
||||
filter := logr.NewCustomFilter(StdAll...)
|
||||
formatter := &formatters.Plain{}
|
||||
target := newTestingTarget(t)
|
||||
|
||||
if err := logger.log.Logr().AddTarget(target, "test", filter, formatter, 1000); err != nil {
|
||||
t.Fail()
|
||||
return nil
|
||||
}
|
||||
return logger
|
||||
}
|
||||
|
||||
// testingTarget is a simple log target that writes to the testing log.
|
||||
type testingTarget struct {
|
||||
mux sync.Mutex
|
||||
t *testing.T
|
||||
}
|
||||
|
||||
func newTestingTarget(t *testing.T) *testingTarget {
|
||||
return &testingTarget{
|
||||
t: t,
|
||||
}
|
||||
}
|
||||
|
||||
// Init is called once to initialize the target.
|
||||
func (tt *testingTarget) Init() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Write outputs bytes to this file target.
|
||||
func (tt *testingTarget) Write(p []byte, rec *logr.LogRec) (int, error) {
|
||||
tt.mux.Lock()
|
||||
defer tt.mux.Unlock()
|
||||
|
||||
if tt.t != nil {
|
||||
tt.t.Log(string(p))
|
||||
}
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
// Shutdown is called once to free/close any resources.
|
||||
// Target queue is already drained when this is called.
|
||||
func (tt *testingTarget) Shutdown() error {
|
||||
tt.mux.Lock()
|
||||
defer tt.mux.Unlock()
|
||||
|
||||
tt.t = nil
|
||||
return nil
|
||||
}
|
@ -9,8 +9,9 @@ import (
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -12,9 +12,10 @@ import (
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
_ "github.com/lib/pq" // postgres driver
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
_ "github.com/mattn/go-sqlite3" // sqlite driver
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
type RootIDNilError struct{}
|
||||
|
@ -5,9 +5,10 @@ import (
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
"github.com/mattermost/focalboard/server/services/store/sqlstore/initializations"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
// InitializeTemplates imports default templates if the blocks table is empty.
|
||||
|
@ -4,7 +4,8 @@ import (
|
||||
"database/sql"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -5,10 +5,11 @@ import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
"github.com/mattermost/focalboard/server/services/store/storetests"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
func SetupTests(t *testing.T) (store.Store, func()) {
|
||||
@ -22,7 +23,7 @@ func SetupTests(t *testing.T) (store.Store, func()) {
|
||||
connectionString = ":memory:"
|
||||
}
|
||||
|
||||
logger := mlog.CreateTestLogger(t)
|
||||
logger := mlog.CreateConsoleTestLogger(false, mlog.LvlDebug)
|
||||
|
||||
sqlDB, err := sql.Open(dbType, connectionString)
|
||||
require.NoError(t, err)
|
||||
|
@ -3,7 +3,7 @@ package sqlstore
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
func (s *SQLStore) CloseRows(rows *sql.Rows) {
|
||||
|
@ -5,9 +5,10 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/utils"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
)
|
||||
|
||||
|
@ -8,9 +8,10 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/scheduler"
|
||||
rudder "github.com/rudderlabs/analytics-go"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -91,7 +92,7 @@ func (ts *Service) sendTelemetry(event string, properties map[string]interface{}
|
||||
func (ts *Service) initRudder(endpoint, rudderKey string) {
|
||||
if ts.rudderClient == nil {
|
||||
config := rudder.Config{}
|
||||
config.Logger = rudder.StdLogger(ts.logger.StdLogger(mlog.Telemetry))
|
||||
config.Logger = rudder.StdLogger(ts.logger.StdLogger(mlog.LvlFBTelemetry))
|
||||
config.Endpoint = endpoint
|
||||
// For testing
|
||||
if endpoint != rudderDataplaneURL {
|
||||
|
@ -8,7 +8,8 @@ import (
|
||||
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/config"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
// NotifyUpdate calls webhooks.
|
||||
|
@ -7,7 +7,9 @@ import (
|
||||
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/config"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
func TestClientUpdateNotify(t *testing.T) {
|
||||
@ -21,7 +23,13 @@ func TestClientUpdateNotify(t *testing.T) {
|
||||
WebhookUpdate: []string{ts.URL},
|
||||
}
|
||||
|
||||
client := NewClient(cfg, mlog.CreateTestLogger(t))
|
||||
logger := mlog.CreateConsoleTestLogger(false, mlog.LvlDebug)
|
||||
defer func() {
|
||||
err := logger.Shutdown()
|
||||
assert.NoError(t, err)
|
||||
}()
|
||||
|
||||
client := NewClient(cfg, logger)
|
||||
|
||||
client.NotifyUpdate(model.Block{})
|
||||
|
||||
|
@ -11,7 +11,8 @@ import (
|
||||
"text/template"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
// RoutedService defines the interface that is needed for any service to
|
||||
|
@ -11,8 +11,9 @@ import (
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/mattermost/focalboard/server/auth"
|
||||
"github.com/mattermost/focalboard/server/model"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
"github.com/mattermost/focalboard/server/services/store"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -5,7 +5,8 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/focalboard/server/auth"
|
||||
"github.com/mattermost/focalboard/server/services/mlog"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
Loading…
Reference in New Issue
Block a user