[MM-54435] Use annotated logger to capture compliance export logs (#24791)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
fe6131caed
Коммит
d0c22aa1cd
@@ -40,7 +40,7 @@ func createComplianceReport(c *Context, w http.ResponseWriter, r *http.Request)
|
|||||||
|
|
||||||
job.UserId = c.AppContext.Session().UserId
|
job.UserId = c.AppContext.Session().UserId
|
||||||
|
|
||||||
rjob, err := c.App.SaveComplianceReport(&job)
|
rjob, err := c.App.SaveComplianceReport(c.AppContext, &job)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1008,7 +1008,7 @@ type AppIface interface {
|
|||||||
SaveAdminNotification(userId string, notifyData *model.NotifyAdminToUpgradeRequest) *model.AppError
|
SaveAdminNotification(userId string, notifyData *model.NotifyAdminToUpgradeRequest) *model.AppError
|
||||||
SaveAdminNotifyData(data *model.NotifyAdminData) (*model.NotifyAdminData, *model.AppError)
|
SaveAdminNotifyData(data *model.NotifyAdminData) (*model.NotifyAdminData, *model.AppError)
|
||||||
SaveBrandImage(imageData *multipart.FileHeader) *model.AppError
|
SaveBrandImage(imageData *multipart.FileHeader) *model.AppError
|
||||||
SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError)
|
SaveComplianceReport(rctx request.CTX, job *model.Compliance) (*model.Compliance, *model.AppError)
|
||||||
SaveReactionForPost(c *request.Context, reaction *model.Reaction) (*model.Reaction, *model.AppError)
|
SaveReactionForPost(c *request.Context, reaction *model.Reaction) (*model.Reaction, *model.AppError)
|
||||||
SaveSharedChannel(c request.CTX, sc *model.SharedChannel) (*model.SharedChannel, error)
|
SaveSharedChannel(c request.CTX, sc *model.SharedChannel) (*model.SharedChannel, error)
|
||||||
SaveSharedChannelRemote(remote *model.SharedChannelRemote) (*model.SharedChannelRemote, error)
|
SaveSharedChannelRemote(remote *model.SharedChannelRemote) (*model.SharedChannelRemote, error)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/mattermost/mattermost/server/public/model"
|
"github.com/mattermost/mattermost/server/public/model"
|
||||||
"github.com/mattermost/mattermost/server/public/shared/mlog"
|
"github.com/mattermost/mattermost/server/public/shared/mlog"
|
||||||
|
"github.com/mattermost/mattermost/server/public/shared/request"
|
||||||
"github.com/mattermost/mattermost/server/v8/channels/store"
|
"github.com/mattermost/mattermost/server/v8/channels/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -26,13 +27,15 @@ func (a *App) GetComplianceReports(page, perPage int) (model.Compliances, *model
|
|||||||
return compliances, nil
|
return compliances, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError) {
|
func (a *App) SaveComplianceReport(rctx request.CTX, job *model.Compliance) (*model.Compliance, *model.AppError) {
|
||||||
if license := a.Srv().License(); !*a.Config().ComplianceSettings.Enable || license == nil || !*license.Features.Compliance || a.Compliance() == nil {
|
if license := a.Srv().License(); !*a.Config().ComplianceSettings.Enable || license == nil || !*license.Features.Compliance || a.Compliance() == nil {
|
||||||
return nil, model.NewAppError("saveComplianceReport", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented)
|
return nil, model.NewAppError("saveComplianceReport", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented)
|
||||||
}
|
}
|
||||||
|
|
||||||
job.Type = model.ComplianceTypeAdhoc
|
job.Type = model.ComplianceTypeAdhoc
|
||||||
|
|
||||||
|
rctx.SetLogger(rctx.Logger().With(job.LoggerFields()...))
|
||||||
|
|
||||||
job, err := a.Srv().Store().Compliance().Save(job)
|
job, err := a.Srv().Store().Compliance().Save(job)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
var appErr *model.AppError
|
var appErr *model.AppError
|
||||||
@@ -45,10 +48,11 @@ func (a *App) SaveComplianceReport(job *model.Compliance) (*model.Compliance, *m
|
|||||||
}
|
}
|
||||||
|
|
||||||
jCopy := job.DeepCopy()
|
jCopy := job.DeepCopy()
|
||||||
|
crctx := rctx.Clone()
|
||||||
a.Srv().Go(func() {
|
a.Srv().Go(func() {
|
||||||
err := a.Compliance().RunComplianceJob(jCopy)
|
err := a.Compliance().RunComplianceJob(crctx, jCopy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
mlog.Warn("Error running compliance job", mlog.Err(err))
|
crctx.Logger().Warn("Error running compliance job", mlog.Err(err))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -14736,7 +14736,7 @@ func (a *OpenTracingAppLayer) SaveBrandImage(imageData *multipart.FileHeader) *m
|
|||||||
return resultVar0
|
return resultVar0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError) {
|
func (a *OpenTracingAppLayer) SaveComplianceReport(rctx request.CTX, job *model.Compliance) (*model.Compliance, *model.AppError) {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.SaveComplianceReport")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.SaveComplianceReport")
|
||||||
|
|
||||||
@@ -14748,7 +14748,7 @@ func (a *OpenTracingAppLayer) SaveComplianceReport(job *model.Compliance) (*mode
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
defer span.Finish()
|
defer span.Finish()
|
||||||
resultVar0, resultVar1 := a.app.SaveComplianceReport(job)
|
resultVar0, resultVar1 := a.app.SaveComplianceReport(rctx, job)
|
||||||
|
|
||||||
if resultVar1 != nil {
|
if resultVar1 != nil {
|
||||||
span.LogFields(spanlog.Error(resultVar1))
|
span.LogFields(spanlog.Error(resultVar1))
|
||||||
|
|||||||
@@ -5,9 +5,10 @@ package einterfaces
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/mattermost/mattermost/server/public/model"
|
"github.com/mattermost/mattermost/server/public/model"
|
||||||
|
"github.com/mattermost/mattermost/server/public/shared/request"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ComplianceInterface interface {
|
type ComplianceInterface interface {
|
||||||
StartComplianceDailyJob()
|
StartComplianceDailyJob()
|
||||||
RunComplianceJob(job *model.Compliance) *model.AppError
|
RunComplianceJob(rctx request.CTX, job *model.Compliance) *model.AppError
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ package mocks
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
model "github.com/mattermost/mattermost/server/public/model"
|
model "github.com/mattermost/mattermost/server/public/model"
|
||||||
|
request "github.com/mattermost/mattermost/server/public/shared/request"
|
||||||
mock "github.com/stretchr/testify/mock"
|
mock "github.com/stretchr/testify/mock"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -14,13 +15,13 @@ type ComplianceInterface struct {
|
|||||||
mock.Mock
|
mock.Mock
|
||||||
}
|
}
|
||||||
|
|
||||||
// RunComplianceJob provides a mock function with given fields: job
|
// RunComplianceJob provides a mock function with given fields: rctx, job
|
||||||
func (_m *ComplianceInterface) RunComplianceJob(job *model.Compliance) *model.AppError {
|
func (_m *ComplianceInterface) RunComplianceJob(rctx request.CTX, job *model.Compliance) *model.AppError {
|
||||||
ret := _m.Called(job)
|
ret := _m.Called(rctx, job)
|
||||||
|
|
||||||
var r0 *model.AppError
|
var r0 *model.AppError
|
||||||
if rf, ok := ret.Get(0).(func(*model.Compliance) *model.AppError); ok {
|
if rf, ok := ret.Get(0).(func(request.CTX, *model.Compliance) *model.AppError); ok {
|
||||||
r0 = rf(job)
|
r0 = rf(rctx, job)
|
||||||
} else {
|
} else {
|
||||||
if ret.Get(0) != nil {
|
if ret.Get(0) != nil {
|
||||||
r0 = ret.Get(0).(*model.AppError)
|
r0 = ret.Get(0).(*model.AppError)
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ package model
|
|||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/mattermost/mattermost/server/public/shared/mlog"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -123,3 +125,17 @@ func (c *Compliance) IsValid() *AppError {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LoggerFields returns the logger annotations reflecting the given compliance job metadata.
|
||||||
|
func (c *Compliance) LoggerFields() []mlog.Field {
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return []mlog.Field{
|
||||||
|
mlog.String("job_id", c.Id),
|
||||||
|
mlog.String("job_type", c.Type),
|
||||||
|
mlog.String("job_name", c.JobName()),
|
||||||
|
mlog.Millis("job_create_at", c.CreateAt),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user