MM-36764 mlog refactor (#18118)
Refactor mlog - simplify mlog by removing redundant code - remove Zap dependency - update unit test helpers - update logging config - update auditing
Этот коммит содержится в:
@@ -46,12 +46,7 @@ func makeLocalBackend(proxy *ImageProxy) *LocalBackend {
|
||||
impl := imageproxy.NewProxy(proxy.HTTPService.MakeTransport(false), nil)
|
||||
|
||||
if proxy.Logger != nil {
|
||||
logger, err := proxy.Logger.StdLogAt(mlog.LevelDebug, mlog.String("image_proxy", "local"))
|
||||
if err != nil {
|
||||
mlog.Warn("Failed to initialize logger for image proxy", mlog.Err(err))
|
||||
}
|
||||
|
||||
impl.Logger = logger
|
||||
impl.Logger = proxy.Logger.With(mlog.String("image_proxy", "local")).StdLogger(mlog.LvlDebug)
|
||||
}
|
||||
|
||||
baseURL, err := url.Parse(*proxy.ConfigService.Config().ServiceSettings.SiteURL)
|
||||
|
||||
@@ -5,13 +5,8 @@ package remotecluster
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"go.uber.org/zap/zapcore"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/einterfaces"
|
||||
"github.com/mattermost/mattermost-server/v6/model"
|
||||
"github.com/mattermost/mattermost-server/v6/plugin/plugintest/mock"
|
||||
@@ -22,14 +17,16 @@ import (
|
||||
|
||||
type mockServer struct {
|
||||
remotes []*model.RemoteCluster
|
||||
logger *mockLogger
|
||||
logger *mlog.Logger
|
||||
user *model.User
|
||||
}
|
||||
|
||||
func newMockServer(t *testing.T, remotes []*model.RemoteCluster) *mockServer {
|
||||
testLogger := mlog.CreateTestLogger(t, nil, mlog.StdAll...)
|
||||
|
||||
return &mockServer{
|
||||
remotes: remotes,
|
||||
logger: &mockLogger{t: t},
|
||||
logger: testLogger,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,88 +61,3 @@ func (ms *mockServer) GetStore() store.Store {
|
||||
return storeMock
|
||||
}
|
||||
func (ms *mockServer) Shutdown() { ms.logger.Shutdown() }
|
||||
|
||||
type mockLogger struct {
|
||||
t *testing.T
|
||||
mux sync.Mutex
|
||||
}
|
||||
|
||||
func (ml *mockLogger) IsLevelEnabled(level mlog.LogLevel) bool {
|
||||
return true
|
||||
}
|
||||
func (ml *mockLogger) Debug(s string, flds ...mlog.Field) {
|
||||
ml.mux.Lock()
|
||||
defer ml.mux.Unlock()
|
||||
if ml.t != nil {
|
||||
ml.t.Log("debug", s, fieldsToStrings(flds))
|
||||
}
|
||||
}
|
||||
func (ml *mockLogger) Info(s string, flds ...mlog.Field) {
|
||||
ml.mux.Lock()
|
||||
defer ml.mux.Unlock()
|
||||
if ml.t != nil {
|
||||
ml.t.Log("info", s, fieldsToStrings(flds))
|
||||
}
|
||||
}
|
||||
func (ml *mockLogger) Warn(s string, flds ...mlog.Field) {
|
||||
ml.mux.Lock()
|
||||
defer ml.mux.Unlock()
|
||||
if ml.t != nil {
|
||||
ml.t.Log("warn", s, fieldsToStrings(flds))
|
||||
}
|
||||
}
|
||||
func (ml *mockLogger) Error(s string, flds ...mlog.Field) {
|
||||
ml.mux.Lock()
|
||||
defer ml.mux.Unlock()
|
||||
if ml.t != nil {
|
||||
ml.t.Log("error", s, fieldsToStrings(flds))
|
||||
}
|
||||
}
|
||||
func (ml *mockLogger) Critical(s string, flds ...mlog.Field) {
|
||||
ml.mux.Lock()
|
||||
defer ml.mux.Unlock()
|
||||
if ml.t != nil {
|
||||
ml.t.Log("crit", s, fieldsToStrings(flds))
|
||||
}
|
||||
}
|
||||
func (ml *mockLogger) Log(level mlog.LogLevel, s string, flds ...mlog.Field) {
|
||||
ml.mux.Lock()
|
||||
defer ml.mux.Unlock()
|
||||
if ml.t != nil {
|
||||
ml.t.Log(level.Name, s, fieldsToStrings(flds))
|
||||
}
|
||||
}
|
||||
func (ml *mockLogger) LogM(levels []mlog.LogLevel, s string, flds ...mlog.Field) {
|
||||
ml.mux.Lock()
|
||||
defer ml.mux.Unlock()
|
||||
if ml.t != nil {
|
||||
ml.t.Log(levelsToString(levels), s, fieldsToStrings(flds))
|
||||
}
|
||||
}
|
||||
func (ml *mockLogger) Shutdown() {
|
||||
ml.mux.Lock()
|
||||
defer ml.mux.Unlock()
|
||||
ml.t = nil
|
||||
}
|
||||
|
||||
func levelsToString(levels []mlog.LogLevel) string {
|
||||
sb := strings.Builder{}
|
||||
for _, l := range levels {
|
||||
sb.WriteString(l.Name)
|
||||
sb.WriteString(",")
|
||||
}
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
func fieldsToStrings(fields []mlog.Field) []string {
|
||||
encoder := zapcore.NewMapObjectEncoder()
|
||||
for _, zapField := range fields {
|
||||
zapField.AddTo(encoder)
|
||||
}
|
||||
|
||||
var result []string
|
||||
for k, v := range encoder.Fields {
|
||||
result = append(result, fmt.Sprintf("%s:%v", k, v))
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ type mockLogger struct {
|
||||
mlog.LoggerIFace
|
||||
}
|
||||
|
||||
func (ml *mockLogger) Log(level mlog.LogLevel, s string, flds ...mlog.Field) {}
|
||||
func (ml *mockLogger) Log(level mlog.Level, s string, flds ...mlog.Field) {}
|
||||
|
||||
func TestOnReceiveChannelInvite(t *testing.T) {
|
||||
t.Run("when msg payload is empty, it does nothing", func(t *testing.T) {
|
||||
|
||||
@@ -7,8 +7,6 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
@@ -22,8 +20,6 @@ func TestMain(m *testing.M) {
|
||||
panic(fmt.Sprintf("Failed to set current working directory to %s: %s", "../..", err.Error()))
|
||||
}
|
||||
|
||||
mlog.DisableZap()
|
||||
|
||||
defer func() {
|
||||
err := os.Chdir(prevDir)
|
||||
if err != nil {
|
||||
|
||||
@@ -1228,7 +1228,7 @@ func (ts *TelemetryService) trackChannelModeration() {
|
||||
func (ts *TelemetryService) initRudder(endpoint string, rudderKey string) {
|
||||
if ts.rudderClient == nil {
|
||||
config := rudder.Config{}
|
||||
config.Logger = rudder.StdLogger(ts.log.StdLog(mlog.String("source", "rudder")))
|
||||
config.Logger = rudder.StdLogger(ts.log.With(mlog.String("source", "rudder")).StdLogger(mlog.LvlDebug))
|
||||
config.Endpoint = endpoint
|
||||
// For testing
|
||||
if endpoint != RudderDataplaneURL {
|
||||
|
||||
@@ -19,6 +19,7 @@ import (
|
||||
"github.com/stretchr/testify/mock"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/config"
|
||||
"github.com/mattermost/mattermost-server/v6/model"
|
||||
"github.com/mattermost/mattermost-server/v6/plugin"
|
||||
"github.com/mattermost/mattermost-server/v6/plugin/plugintest"
|
||||
@@ -40,6 +41,7 @@ func (fcs *FakeConfigService) AsymmetricSigningKey() *ecdsa.PrivateKey
|
||||
|
||||
func initializeMocks(cfg *model.Config) (*mocks.ServerIface, *storeMocks.Store, func(t *testing.T), func()) {
|
||||
serverIfaceMock := &mocks.ServerIface{}
|
||||
logger, _ := mlog.NewLogger()
|
||||
|
||||
configService := &FakeConfigService{cfg}
|
||||
serverIfaceMock.On("Config").Return(cfg)
|
||||
@@ -56,7 +58,7 @@ func initializeMocks(cfg *model.Config) (*mocks.ServerIface, *storeMocks.Store,
|
||||
func(m *model.Manifest) plugin.API { return pluginsAPIMock },
|
||||
nil,
|
||||
pluginDir, webappPluginDir,
|
||||
mlog.NewLogger(&mlog.LoggerConfiguration{}),
|
||||
logger,
|
||||
nil)
|
||||
serverIfaceMock.On("GetPluginsEnvironment").Return(pluginEnv, nil)
|
||||
|
||||
@@ -270,7 +272,14 @@ func TestRudderTelemetry(t *testing.T) {
|
||||
defer cleanUp()
|
||||
defer deferredAssertions(t)
|
||||
|
||||
telemetryService := New(serverIfaceMock, storeMock, searchengine.NewBroker(cfg, nil), mlog.NewLogger(&mlog.LoggerConfiguration{}))
|
||||
testLogger, _ := mlog.NewLogger()
|
||||
logCfg, _ := config.MloggerConfigFromLoggerConfig(&cfg.LogSettings, nil, config.GetLogFileLocation)
|
||||
if errCfg := testLogger.ConfigureTargets(logCfg); errCfg != nil {
|
||||
panic("failed to configure test logger: " + errCfg.Error())
|
||||
}
|
||||
defer testLogger.Shutdown()
|
||||
|
||||
telemetryService := New(serverIfaceMock, storeMock, searchengine.NewBroker(cfg, nil), testLogger)
|
||||
telemetryService.TelemetryID = telemetryID
|
||||
telemetryService.rudderClient = nil
|
||||
telemetryService.initRudder(server.URL, RudderKey)
|
||||
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"flag"
|
||||
"testing"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
"github.com/mattermost/mattermost-server/v6/testlib"
|
||||
)
|
||||
|
||||
@@ -26,8 +25,6 @@ func TestMain(m *testing.M) {
|
||||
WithReadReplica: replicaFlag,
|
||||
}
|
||||
|
||||
mlog.DisableZap()
|
||||
|
||||
mainHelper = testlib.NewMainHelperWithOptions(&options)
|
||||
defer mainHelper.Close()
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user