Refactor mlog
- simplify mlog by removing redundant code
- remove Zap dependency
- update unit test helpers
- update logging config
- update auditing
Этот коммит содержится в:
Doug Lauder
2021-08-17 16:08:04 -04:00
коммит произвёл GitHub
родитель 04b27ce93c
Коммит a4507327a7
216 изменённых файлов: 4940 добавлений и 14674 удалений

Просмотреть файл

@@ -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()