<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #38889 PLEASE READ BELOW before looking at file changes Before converting individual files/packages to slog, we generally need to make these 2 changes to make the conversion easier: - Replace uses of `kitlog.With` since they are not fully compatible with our kitlog adapter - Directly use the kitlog adapter logger type instead of the kitlog interface, which will let us have direct access to the underlying slog logger: `*logging.Logger` Note: that I did not replace absolutely all uses of `kitlog.Logger`, but I did remove all uses of `kitlog.With` except for these due to complexity: - server/logging/filesystem.go and the other log writers (webhook, firehose, kinesis, lambda, pubsub, nats) - server/datastore/mysql/nanomdm_storage.go (adapter pattern) - server/vulnerabilities/nvd/* (cascades to CLI tools) - server/service/osquery_utils/queries.go (callback type signatures cascade broadly) - cmd/maintained-apps/ (standalone, so can be transitioned later all at once) Most of the changes in this PR follow these patterns: - `kitlog.Logger` type → `*logging.Logger` - `kitlog.With(logger, ...)` → `logger.With(...)` - `kitlog.NewNopLogger() → logging.NewNopLogger()`, including similar variations such as `logging.NewLogfmtLogger(w)` and `logging.NewJSONLogger(w)` - removed many now-unused kitlog imports Unique changes that the PR review should focus on: - server/platform/logging/kitlog_adapter.go: Core adapter changes - server/platform/logging/logging.go: New convenience functions - server/service/integration_logger_test.go: Test changes for slog # Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] Changes file added for user-visible changes in `changes/`, `orbit/changes/` or `ee/fleetd-chrome/changes`. - Was added in previous PR ## Testing - [x] Added/updated automated tests - [x] QA'd all new/changed functionality manually <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Migrated the codebase to a unified internal structured logging system for more consistent, reliable logs and observability. * No user-facing functionality changed; runtime behavior and APIs remain compatible. * **Tests** * Updated tests to use the new logging helpers to ensure consistent test logging and validation. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
112 lines
4.2 KiB
Go
112 lines
4.2 KiB
Go
package service
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/WatchBeam/clock"
|
|
"github.com/fleetdm/fleet/v4/server/authz"
|
|
"github.com/fleetdm/fleet/v4/server/config"
|
|
"github.com/fleetdm/fleet/v4/server/fleet"
|
|
"github.com/fleetdm/fleet/v4/server/mdm/android"
|
|
apple_mdm "github.com/fleetdm/fleet/v4/server/mdm/apple"
|
|
"github.com/fleetdm/fleet/v4/server/mdm/nanodep/storage"
|
|
"github.com/fleetdm/fleet/v4/server/platform/logging"
|
|
"github.com/fleetdm/fleet/v4/server/sso"
|
|
)
|
|
|
|
// Service wraps a free Service and implements additional premium functionality on top of it.
|
|
type Service struct {
|
|
fleet.Service
|
|
|
|
ds fleet.Datastore
|
|
logger *logging.Logger
|
|
config config.FleetConfig
|
|
clock clock.Clock
|
|
authz *authz.Authorizer
|
|
depStorage storage.AllDEPStorage
|
|
mdmAppleCommander fleet.MDMAppleCommandIssuer
|
|
ssoSessionStore sso.SessionStore
|
|
depService *apple_mdm.DEPService
|
|
profileMatcher fleet.ProfileMatcher
|
|
softwareInstallStore fleet.SoftwareInstallerStore
|
|
bootstrapPackageStore fleet.MDMBootstrapPackageStore
|
|
softwareTitleIconStore fleet.SoftwareTitleIconStore
|
|
distributedLock fleet.Lock
|
|
keyValueStore fleet.KeyValueStore
|
|
scepConfigService fleet.SCEPConfigService
|
|
digiCertService fleet.DigiCertService
|
|
androidModule android.Service
|
|
estService fleet.ESTService
|
|
}
|
|
|
|
func NewService(
|
|
svc fleet.Service,
|
|
ds fleet.Datastore,
|
|
logger *logging.Logger,
|
|
config config.FleetConfig,
|
|
mailService fleet.MailService,
|
|
c clock.Clock,
|
|
depStorage storage.AllDEPStorage,
|
|
mdmAppleCommander fleet.MDMAppleCommandIssuer,
|
|
sso sso.SessionStore,
|
|
profileMatcher fleet.ProfileMatcher,
|
|
softwareInstallStore fleet.SoftwareInstallerStore,
|
|
bootstrapPackageStore fleet.MDMBootstrapPackageStore,
|
|
softwareTitleIconStore fleet.SoftwareTitleIconStore,
|
|
distributedLock fleet.Lock,
|
|
keyValueStore fleet.KeyValueStore,
|
|
scepConfigService fleet.SCEPConfigService,
|
|
digiCertService fleet.DigiCertService,
|
|
androidService android.Service,
|
|
estService fleet.ESTService,
|
|
) (*Service, error) {
|
|
authorizer, err := authz.NewAuthorizer()
|
|
if err != nil {
|
|
return nil, fmt.Errorf("new authorizer: %w", err)
|
|
}
|
|
|
|
eeservice := &Service{
|
|
Service: svc,
|
|
ds: ds,
|
|
logger: logger,
|
|
config: config,
|
|
clock: c,
|
|
authz: authorizer,
|
|
depStorage: depStorage,
|
|
mdmAppleCommander: mdmAppleCommander,
|
|
ssoSessionStore: sso,
|
|
depService: apple_mdm.NewDEPService(ds, depStorage, logger),
|
|
profileMatcher: profileMatcher,
|
|
softwareInstallStore: softwareInstallStore,
|
|
bootstrapPackageStore: bootstrapPackageStore,
|
|
softwareTitleIconStore: softwareTitleIconStore,
|
|
distributedLock: distributedLock,
|
|
keyValueStore: keyValueStore,
|
|
scepConfigService: scepConfigService,
|
|
digiCertService: digiCertService,
|
|
androidModule: androidService,
|
|
estService: estService,
|
|
}
|
|
|
|
// Override methods that can't be easily overriden via
|
|
// embedding.
|
|
svc.SetEnterpriseOverrides(fleet.EnterpriseOverrides{
|
|
HostFeatures: eeservice.HostFeatures,
|
|
TeamByIDOrName: eeservice.teamByIDOrName,
|
|
UpdateTeamMDMDiskEncryption: eeservice.updateTeamMDMDiskEncryption,
|
|
MDMAppleEnableFileVaultAndEscrow: eeservice.MDMAppleEnableFileVaultAndEscrow,
|
|
MDMAppleDisableFileVaultAndEscrow: eeservice.MDMAppleDisableFileVaultAndEscrow,
|
|
DeleteMDMAppleSetupAssistant: eeservice.DeleteMDMAppleSetupAssistant,
|
|
MDMAppleSyncDEPProfiles: eeservice.mdmAppleSyncDEPProfiles,
|
|
DeleteMDMAppleBootstrapPackage: eeservice.DeleteMDMAppleBootstrapPackage,
|
|
MDMWindowsEnableOSUpdates: eeservice.mdmWindowsEnableOSUpdates,
|
|
MDMWindowsDisableOSUpdates: eeservice.mdmWindowsDisableOSUpdates,
|
|
MDMAppleEditedAppleOSUpdates: eeservice.mdmAppleEditedAppleOSUpdates,
|
|
SetupExperienceNextStep: eeservice.SetupExperienceNextStep,
|
|
GetVPPTokenIfCanInstallVPPApps: eeservice.GetVPPTokenIfCanInstallVPPApps,
|
|
InstallVPPAppPostValidation: eeservice.InstallVPPAppPostValidation,
|
|
})
|
|
|
|
return eeservice, nil
|
|
}
|